前言
在使用 Spring MVC
的过程中,遇到一个问题,在 Spring 容器
中注册的属性文件, 在 SpringMVC 容器
中无法用 @Value
标签引入!
按理说, SpringMVC 容器
应该能继承父容器中的所有Bean, 为什么不能使用父容器中引入的配置文件信息呢?
很遗憾,这个问题暂时没能找到答案,如果哪位大神能解答,请告知
但是问题还是要解决的, 我们只能换个思路解决。 如果 SpringMVC 子容器
和 Spring 父容器
如果合一了,不就不存在需要重复引入的问题吗?
那么问题来了:
SpringMVC 容器和 Spring 容器能合一吗?
先来看看一般我们使用 SpringMVC
的 web.xml
配置文件,
1 | <!DOCTYPE web-app PUBLIC |
Tomcat
在解析 web.xml
的时候先后加载 listener
-> filter
-> servlet
先记载 ContextLoaderListener
1 | /** |
1 | /** |
而 DispatcherServlet
继承 FrameworkServlet
, FrameworkServlet
继承 HttpServletBean
HttpServletBean
继承 HttpServlet
, 并且提供 init
方法
HttpServletBean 中的 init
方法调用抽象方法 initServletBean
1 |
|
FrameworkServlet
实现 initServletBean
方法
1 |
|
在这里,我们找到了 两个容器合一的方法! 果然是 Time is cheap, show me the code
, 源码能告诉我们一切!
到这里, 找到了配置方式:
1 |
|
下面在回头来看看之前没有解决的问题:
为什么 SpringMVC 子容器
不能继承 Spring 父容器
引入的属性文件
待解决…