springmvc注解开发,springmvc.xml的配置和spring的applicationContext.xml分开扫描学习总结。

其实有时候写开发,有时候会把以前的知识记不太清,现在就记录一下这个自己理解的东西,纯属个人看法,谢谢理解!

学习springmvc的注解开发的时候,发现web.xml的配置里面,会有两个spring的容器配置,一个是springmvc.xml和applicationContext.xml(这是我的项目的配置命名,也可以其他命名)。然后发现我项目能够跑起来的时候,springmvc配置里面写的东西,是只扫描Controller控制层,和一些jsp的界面映射的配置,而applicationContext.xml扫描除了控制层之外的service业务层和dao层,实体类等等,和其他事务管理配置,aop,数据库等配置信息。首先我们知道用户访问后,项目里面先初始化applicationContext.xml再初始化springmvc.xml的。现在总结我了解了两个分开扫描信息:

1.applicationContext.xml是父容器,springmvc.xml是子容器,可以看成父容器的大圆包含这个mvc子容器的小圆,父容器不能访问子容器,而子容器可以访问父容器,这句话会配合下面的第三点解释。

2.一定要mvc子容器要扫描控制层Controller,用户访问时候,会从DispatcherServlet下面的mvc配置开始找@Controller注解的Bean。如果父容器扫描了控制层,那么子容器就找不到这个处理器,就跳转不了页面,出现404。

3.根据第一第二点,我们知道,springmvc.xml子容器扫描控制层,spring的applicationContext扫描业务和dao层,子容器可以访问父容器,父容器不能访问子容器,所以我们可以在控制层使用@Autowired注解service,service里面可以注解dao,没有在service里面注解Controller

4.既然一定要mvc扫描控制层,spring扫描业务和dao等其他,那么我不要spring可不可以?答案是:直接在mvc扫描所有的这也是可以的,这样子容器里面就封装了所有的层bean,而且还可以互相访问。之所以要applicationContext.xml,只是因为方便拓展,如果很多东西都在一个容器配置,就很麻烦,比如,事务配置还有加入其它架构什么的,很不方便。

5.配上我一年前我第一次写springmvc注解的配置。web,springmvc,和spring的配置。

springmvc注解开发,springmvc.xml的配置和spring的applicationContext.xml分开扫描学习总结。

springmvc注解开发,springmvc.xml的配置和spring的applicationContext.xml分开扫描学习总结。

springmvc注解开发,springmvc.xml的配置和spring的applicationContext.xml分开扫描学习总结。

总结:springmvc.xml只扫描控制层就可以了,spring的applicationContext这个配置扫描除了控制层之外就可以了。项目就可以跑起来了