原理
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

努力扒源码,用图、表、简单文字说明原理,我喜欢简单,就把最简单原理传递给你!