原理
Spring使用父容器,SpringMVC使用子容器来加载Bean,父容器内容对子容器可见,子容器内容对父容器不可见,猜测是加载顺序导致;
所以让父容器扫描除controller外Bean,子容器扫描controller类来完成servlet转发;
最后再ApplicationContext.xml和SpringMvc-context.xml看到如下:
<!-- Spring容器中注册非@controller注解的Bean -->
<context:component-scan base-package="com.hafiz.www">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- SpringMVC容器中只注册带有@controller注解的Bean -->
<context:component-scan base-package="com.hafiz.www" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
图
代码
参考资料
https://www.cnblogs.com/junzi2099/p/8042476.html
https://www.cnblogs.com/hafiz/p/5875740.html
努力扒源码,用图、表、简单文字说明原理,我喜欢简单,就把最简单原理传递给你!
本文解析了Spring框架如何使用父容器加载除Controller外的Bean,而SpringMVC作为子容器仅加载带有@Controller注解的Bean。通过配置ApplicationContext.xml和SpringMvc-context.xml,实现非控制器Bean和控制器Bean的分别扫描。
1433

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



