今天初次学习springMVC的时候,我跟着视频老师边听边做。按照老师的思想就是需要先用spring初始化一个父容器,用来管理一些底层公用的Bean,例如dao,service这些,然后用springMVC初始化一些上层的bean,例如controller,而springMVC本身就属于spring功能的一部分,他自己也有一个容器,是继承的spring父容器的一个子容器。那么父容器中的bean对于子容器就可用,反过来就不行。于是我分了spring的配置文件applicationContext.xml和springMVC的配置文件mvc-dispatcher-servlet.xml.
在spring的配置文件applicationContext.xml中,我用注解扫描service的包,并且过滤掉controller,如
然后在 springMVC的配置文件 mvc-dispatcher-servlet.xml中配置扫描controller.
于是在web.xml中配置加载spring和springMVC -dispatcher的上下文以及相应的类
启动tomcat,出现问题了,发现本应该在父容器中实例化的service层的bean(test)无法注入到springMVC的子容器中的controller中,原因是该bean(test)未被实例化,
进一步测试发现spring好像就和没有启动一样,因为他要负责管理的底层公用的bean全都没有被实例化,而上层springMVC负责管理的controller全都被实例化了两次 。
于是我 使尽 各种昏招,改配置文件,怀疑配置文件没有被加载,或是spring没有启动成功,问题还是解决不了。就这样各种办法试了一个下午,最终才发现,原来是这里出了问题
他们的名字重复,导致前一个变量被后一个给覆盖了,改正,问题解决。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐