参考链接: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>