1、父子容器关系:
子容器可以调用父容器的对象,但是不能直接调用父容器的属性,可以使用父容器的getter方法调用该属性;
父容器不能调用子容器的对象,也不能直接调用子容器的属性。
2、Spring 与 SpringMVC关系

如上图所示:
Spring 是父容器,SpringMVC是子容器。
Spring 容器中有mapper 代理对象、service对象,
SpringMVC容器中有controller 对象。
SpringMVC 的配置扫描文件中:
<!-- 配置包扫描器 -->
<context:component-scan base-package="com.XXX.controller"></context:component-scan>
只需要扫描@controller注解的对象,即可。因为SpringMVC作为子容器,可以访问Spring父容器的Mapper代理对象和Service对象。
如果将SpringMVC包的扫描器扩大,那么SpringMVC也会扫描Mapper代理对象和Service对象,这样SpringMVC会“就近选择”自己容器的对象,而不会调用父容器的对象。Spring容器会对某些对象进行AOP 或者事物操作的配置,此时子容器中扫描得到的对象失去这些特性。
因此,配置SpringMVC扫描器时,要扫描到controller即可。
本文阐述了Spring与SpringMVC之间的父子容器关系。Spring作为父容器包含mapper代理和服务对象,而SpringMVC作为子容器包含控制器对象,并可以通过父容器获取必要的服务组件。
2016

被折叠的 条评论
为什么被折叠?



