在配置springmvc的时候,可以把所有的配置配置到springmvc的xml文件中,也可以分成多个Spring的配置文件,然后使用import节点导入其他的配置文件。但是通常情况下,类似于数据源,事务,IOC容器中的Dao层,service层,整合其他框架都是放在Spring的配置文件中(而不是SpringMVC的配置文件中)。
1.单独配置spring配置文件的目的:
配置Spring配置文件的本质是单独加入Spring的IOC容器,来管理数据源,service,Dao这些属于“Spring自身”的bean,而让springmvc的IOC容器专门管理Controller,解析器等属于springmvc自己的内容。
2.怎样分离spring配置文件和springMVC配置文件
2.1 web.xml对spring配置文件的配置
只需要在web.xml文件中配置监听,启动SpringIOC容器的ContextLoaderListener,
<context-param>
<param-name>contextConfigLocation</param-name>
<!--指定spring配置文件位置 -->
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
其中classpath:spring/spring-context.xml是spring的配置文件,spring的IOC容器。主要扫描service,dao的包,数据源信息,事务等。(另一种写法是applicationContext.xml作为总的文件,导入spring-dao.xml,spring-service.xml,spring-mvc.xml)
2.2 web.xml对springmvc配置文件的配置
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<!-- 启动顺序-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
其中springmvc.xml就是springmvc的配置文件,只在该文件中扫描Controller的包,视图解析器等。
3.一般web.xml中还会配置字节编码CharacterEncodingFilter和支持Rest风格HiddenHttpMethodFilter等的两个过滤器
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 支持Rest风格的过滤器-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>