spring和springmvc配置分离

在配置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>

版权声明:本文为weixin_51725434原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。