spring和springmvc包扫描问题

写这篇博客之前,橘子松必须感慨下!!找了我一下午加一晚上(md),问了几个朋友也没找到。凉了啊

在搭建ssm之前,我把controller service mapper包扫描用基本包扫描   都写在applicationContext.xml文件中

applicationContext.xml

后来发现controller始终找不到handler 奇了怪了 检查了前端控制器也没错啊   控制台就是一致显示没有mapping found

后来发现问题出现在把Controller包扫描写在spring(也就是applicationContext.xml)中  如果写在springmvc(springmvc.xml)中就正常了

原因:spring和springmvc都是容器,前者是父容器,后者是子容器,子容器能访问父容器的bean,父容器不能访问子容器的bean,springmvc默认在当前容器(自己的容器)中找controller跳转规则,而这时的SpringMVC容器中没有对象,没有对象就没有Controller,所以加载处理器,适配器的时候就会找不到映射对象,映射关系,因此在页面上就会出现404的错误。。

解决办法:

1、可以在springmvc.xml中也扫描一次controller包,但是这样会初始化两次bean,Spring 容器先初始化bean,MVC容器再初始化bean;

2、可以把所有的bean都让mvc创建,但是这样不利于扩展;

3、spring复制其它bean的创建,mvc复制controller的创建。
 
如有说的还有不对 ,请下方留言纠正
原文地址:https://www.cnblogs.com/csong7876/p/8395148.html