20190403--------------------------spring-mvc.xml配置回顾

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36810906/article/details/88990853

参考链接:https://www.cnblogs.com/zhangxingBlob/p/6364728.html 

一、配置文件1

1.自动扫描

<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.javen.controller" />

2.注解驱动

<!-- 扩充了注解驱动,可以将请求参数绑定到控制参数-->
<mvc:annotation-driven />

3.静态资源处理

<!-- 静态资源处理 css js images -->
<mvc:resources location="/resources/**" mapping="/resource/"/>

4.避免IE执行AJAX时,返回JSON出现下载文件

<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter" 
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

5.启动SpringMVC的注解功能,完成请求和注解POJO的映射

<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter"/><!-- JSON转换器 -->
</list>
</property>
</bean>

6.配置文件上传

<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 上传文件最大值 -->
<property name="maxUploadSize" value="10485760000"/>
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="40960"/>
<!-- 启用是为了推迟文件解析,以便捕获文件大小异常 -->
<property name="resolveLazily" value="true"/>
</bean>

7.配置viewResolver

<!-- 配置viewResolver。可以用多个viewResolver。使用order属性排序。InternalResourceViewResolver 放在最后 -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"></property>
<property name="mediaTypes">
<map>
<!-- 告诉视图解析器,返回的类型为json格式 -->
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="htm" value="text/htm" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- ModelAndView里的数据变成JSON -->
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true"></property>
</bean>

8.定义跳转的文件的前后缀 ,视图模式配置

<!-- 定义跳转的文件的前后缀 ,视图模式配置--> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> 
<property name="prefix" value="/WEB-INF/jsp/" /> 
<property name="suffix" value=".jsp" /> 
</bean>

 9.destroy-method="close"

的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.

二、配置文件2

参考链接:https://blog.csdn.net/qq_37889636/article/details/80575845

<?xml version="1.0" encoding="UTF-8"?>
<beans 
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
    
    <!-- @Controller -->
    <context:component-scan base-package="com.jfdata.controller"></context:component-scan>
    <!-- @Service -->
    <context:component-scan base-package="com.jfdata.service.impl"></context:component-scan>
    <!-- @Repository -->
    <context:component-scan base-package="com.jfdata.dao"></context:component-scan>
    
    <!-- 加载数据库连接文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/WEB-INF/jdbc.properties</value>
            </list>
        </property>
    </bean>
    
    <!-- 阿里的数据库连接池配置 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 数据链接的基本参数 -->
        <property name="driverClassName" value="${jdbc.driverClassName}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="1"/>
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="3"/>
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="20"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>


        <!-- 超过时间限制是否回收 -->
        <property name="removeAbandoned" value="true"/>
        <!-- 超过时间限制多长(秒) -->
        <property name="removeAbandonedTimeout" value="600"/>
        <!-- 打开abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="true"/>


        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <!-- 用来检测连接是否有效的sql,要求是一个查询语句-->
        <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
        <!-- 用来检测连接是否有效的sql查询超时时间,单位是秒-->
        <property name="validationQueryTimeout" value="10"/>


        <!-- 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效 -->
        <property name="testWhileIdle" value="true"/>
        <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
        <property name="testOnBorrow" value="false"/>
        <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
        <property name="testOnReturn" value="false"/>


        <!-- 打开PSCache -->
        <property name="poolPreparedStatements" value="true"/>
        <!-- 指定每个连接上PSCache的大小 -->
        <property name="maxOpenPreparedStatements" value="50"/>


        <!--属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall -->
        <property name="filters" value="wall,stat"/>
    </bean>
    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations"
                  value="classpath*:com/jfdata/mapper/*.xml"/>
    </bean>


    <!-- MyBatis 接口编程配置 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- basePackage指定要扫描的包,在此包之下的映射器都会被搜索到,可指定多个包,包与包之间用逗号或分号分隔 -->
        
        <property name="basePackage" value="com.jfdata.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>


    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>


   <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
       <property name="messageConverters">
           <list>
               <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
           </list>
       </property>
   </bean>
   
   <!-- redis配置Component Scan -->
    <context:component-scan base-package="com.jfdata.redis"/>
    <!-- 配置Redis连接池 -->
    <bean id="redisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="5"/>
        <property name="maxTotal" value="20"/>
        <property name="maxWaitMillis" value="1000"/>
        <property name="testOnBorrow" value="true"/>
    </bean>


    <!-- 配置RedisTemplate -->
    <bean id="redisTemplate" class="com.faw_qm.cloud.platform.util.RedisTemplate" init-method="init" destroy-method="destroy">
        <property name="poolConfig" ref="redisPoolConfig"/>
        <!-- 单机配置 -->
        <property name="host" value="dp62"/>
        <property name="port" value="6379"/>
       <!-- <property name="password" value="QmDevsideR@1qasx@Waz"/>-->
        <!-- 集群配置-->
       <!-- <property name="cluster" value="qm-dev-redis1:7000,qm-dev-redis1:7001,qm-dev-redis2:7000,qm-dev-redis2:7001"/> -->
    </bean>


    <!-- 配置Region个数 -->
    <bean id="redisRegionNumber" class="java.lang.Integer">
    <constructor-arg value="24"/>
    </bean>
</beans>

三、配置文件3

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

   <!-- 扫描service、dao组件 -->
   <!--<context:component-scan base-package="com.**.service,com.**.dao" /> -->

   <!-- 注解方式 -->
   <mvc:annotation-driven />

   <!--静态资源的访问 -->
   <mvc:default-servlet-handler />

   <aop:aspectj-autoproxy proxy-target-class="true" />

   <context:component-scan base-package="com.isales" />

   <!-- 自动扫描Controller -->
   <!--<context:component-scan base-package="com.**.controller" /> -->

   <!--扫描系统日志,切面处理类 -->
   <!--<context:component-scan base-package="com.isales.sys.aop" /> -->

   <!--扫描定时任务 -->
   <!--<context:component-scan base-package="com.isales.sys.task" /> -->
   <!--RequestMappingHandlerAdapter可以根据@requestmapping标注调用实际的函数,MappingJackson2HttpMessageConverter是json转换器 -->

   <mvc:annotation-driven>
      <mvc:argument-resolvers>
         <bean
            class="com.isales.app.resolver.LoginUserHandlerMethodArgumentResolver">
         </bean>
      </mvc:argument-resolvers>
      <mvc:message-converters>
         <bean
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
               <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                  <property name="dateFormat">
                     <bean class="java.text.SimpleDateFormat">
                        <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
                     </bean>
                  </property>
               </bean>
            </property>
         </bean>
      </mvc:message-converters>
   </mvc:annotation-driven>

   <!-- 框架异常处理Handler -->
   <bean id="exceptionResolver" class="com.isales.base.exception.MyHandlerExceptionResoler"></bean>

   <!-- Velocity视图解析器 默认视图 -->
   <bean id="velocityViewResolver"
      class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
      <property name="contentType" value="text/html;charset=UTF-8" />
      <property name="viewNames" value="*.html" />
      <property name="suffix" value="" />
      <property name="dateToolAttribute" value="date" />
      <property name="numberToolAttribute" value="number" />
      <property name="toolboxConfigLocation" value="/WEB-INF/velocity-toolbox.xml" />
      <property name="requestContextAttribute" value="rc" />
      <property name="order" value="0" />
   </bean>

   <bean id="velocityConfigurer"
      class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
      <property name="resourceLoaderPath" value="/WEB-INF/views/" />
      <property name="velocityProperties">
         <props>
            <prop key="input.encoding">UTF-8</prop>
            <prop key="output.encoding">UTF-8</prop>
            <prop key="contentType">text/html;charset=UTF-8</prop>
         </props>
      </property>
   </bean>

   <!-- JSP视图解析器 -->
   <bean id="viewResolverJsp"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/views/" />
      <property name="viewClass"
         value="org.springframework.web.servlet.view.JstlView" />
      <property name="viewNames" value="*.jsp" />
      <property name="suffix" value="" />
      <property name="order" value="1" />
   </bean>

   <!-- FreeMarker视图解析器 -->
   <bean id="viewResolver"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
      <property name="viewClass"
         value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
      <property name="contentType" value="text/html; charset=utf-8" />
      <property name="cache" value="false" />
      <property name="viewNames" value="*.ftl" />
      <property name="suffix" value="" />
      <property name="order" value="2" />
   </bean>

   <!-- 支持文件上传 -->
   <bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   </bean>

   <bean
      class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
      <property name="exceptionMappings">
         <props>
            <prop key="org.apache.shiro.authz.UnauthorizedException">/admin/403</prop>
         </props>
      </property>
   </bean>
   <!-- Kaptcha验证码生成器 -->
   <bean name="producer" class="com.google.code.kaptcha.impl.DefaultKaptcha"
      scope="singleton">
      <property name="config">
         <bean class="com.google.code.kaptcha.util.Config">
            <constructor-arg>
               <props>
                  <prop key="kaptcha.border">no</prop>
                  <prop key="kaptcha.textproducer.font.color">black</prop>
                  <prop key="kaptcha.textproducer.char.space">5</prop>
               </props>
            </constructor-arg>
         </bean>
      </property>
   </bean>

   <!-- AOP式方法级权限检查 注:使用shiro注解就需要用AOP -->
   <bean
      class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
      depends-on="lifecycleBeanPostProcessor">
      <!--使用代理类 -->
      <property name="proxyTargetClass" value="true" />
   </bean>
   <bean
      class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
      <property name="securityManager" ref="securityManager" />
   </bean>
</beans>

猜你喜欢

转载自blog.csdn.net/weixin_36810906/article/details/88990853