关于Spring父子容器的理解

关于Spring父子容器的理解

在使用SSM框架开发时,Spring可以初始化一个spring容器(父容器),SpringMVC也可以初始化一个spring容器(子容器)。
三层架构在容器中注入如下图:


从图上可以看出,service是在父容器里的,方便AOP。
而controller在子容器, springmvc是处理映射请求,而spring是bean容器。spring扫描后将@Controller注解视为一个对象保存在容器中,如果不在mvc中启动扫描@Controller注解的话那么即使访问该映射的路径(@RequestMapping路径)下的文件也会报错404,因为springmvc找不到,因此必须要让springmvc框架去扫描@Controller才能真正的映射到指定路径。
而且为了架构清晰可以只让springmvc管理不需要spring管理了。
另外,在Controller bean中注入ApplicationContext拿到的是子容器,而在Service bean中注入ApplicationContext拿到的是父容器。这句话有利于理解java中context的失意,该对象的上下文环境。
父容器的配置文件名称一般为applicationContext.xml,也就是spring的配置文件名称。
子容器的配置文件名称一般为springmvc.xml,也就是springmvc的配置文件名称。

猜你喜欢

转载自blog.csdn.net/hasagei_ly/article/details/78229195
今日推荐