关于web.xml配置文件的一些问题
来源:2-6 逐层完成SSM的各项配置
罗帅
2017-11-26
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</init-param>
</servlet>
这里是加载springMVC相关配置,可是我看到网上加载spring业务层和DAO层的配置文件是加了这些
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
想问这两种方式有区别吗?
1回答
-
罗帅
提问者
2017-11-27
我看了springmvc的源码,其实老师的方法也行,只加
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</init-param>
</servlet>
而不加
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在初始化DispatcherServlet如果顶层WebApplicationContext还没被创建,就会创建一个。
不过业界普遍做法是
将除web层的配置交由ContextLoaderListener加载得到顶层父容器RootWebApplication,
而web层的组件交由DispatcherServlet初始化完成,得到特定于DispatcherServlet的
WebApplicationContext,并与父容器RootWebApplication关联。
这样做的好处是:
因为在web容器中,Listener先于Servlet执行,故底层的Dao和Service层的bean组件先构建完成,再构建web层组件,自底向上,分层清晰,职责明确。
以官方文档中的图来说明:
不知这样分析对不对?
112017-11-27
相似问题
回答 1
回答 1