在研究springmvc事务功能的过程中,我对spring的配置文件有了更加深入的理解。
以前,我们搭建spring项目的时候,必须要applicationContext.xml文件,名字还要保持一样,而且位置必须放在
WEB-INF目录下。
这样就太不灵活了。
实际上,spring配置文件分为两部分。
1,DispatcherServlet部分,这部分在web.xml配置后,负责请求的,本质对应controller
<!-- springMVC核心配置 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.contextConfigLocation部分,这部分在web.xml配置后,负责非controller部分,比如service,dao等。
<!-- 读取spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring.xml;
classpath:conf/spring-mybatis.xml
</param-value>
</context-param>
另外,这两部分的加载顺序必须要contextConfig先,DispatcherServlet后,否则报各种注入失败问题。
所以,我们的spring项目是有两个spring容器的,它们是父子关系。