标签:ring 容器 可见 获取 文件 声明式 dispatch contex ast
在 Spring 与 Springmvc 同时使用时,Spring 的 ContextLoaderListener 会创建的 SpringIOC 容器,SpringMVC 的 DispatcherServlet 会创建 SpringMVC 的 IOC 容器。SpringMVC会将 SpringIOC 容器设置为父容器。
父容器对子容器是可见的,所以在子容器中可以访问父容器的 Bean 对象,而子容器对 父容器不可见的,所以在父容器中无法获取子容器的 Bean 对象。
如果在 SpringMVC 的配置文件中扫描所有注解,会出现声明式事务失效。因为 Spring 声明式事务管理的切面位于 Spring 的 IOC 容器,而子容器对父容器不可见,所以事务管理器 的切面无法对 SpringIOC 容器中的 Bean 对象实现事务控制。
如果在 Spring 的配置文件中扫描所有注解,会出现无法找到控制器而报 404 的异常。 因为 HandleMapping 在根据 URI 查找控制器时,只会去 SpringMVC 的 IOC 容器中查找控制器, 而在 SpringMVC 的 IOC 容器并没有控制器对象,所以会出现 404 的异常。
在 SpringMVC 的配置文件中扫描@Controller 注解,在 Spring 的配置文件中扫描除了 @Controller 以外的其他注解。在 SpringMVC 的控制器可以注入 SpringIOC 容器中的 Bean 对 象,因为父容器对子容器是可见的。
标签:ring 容器 可见 获取 文件 声明式 dispatch contex ast
原文地址:https://www.cnblogs.com/freefantasy/p/13844063.html