Spring 与 SpringMVC 之间的父子容器关系

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即可。


猜你喜欢

转载自blog.csdn.net/py_tamir/article/details/80916954