码迷,mamicode.com
首页 > 编程语言 > 详细

spring 配置

时间:2016-07-14 18:59:01      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

SpringMVC配置


引入占位符
<context:property-placeholder location="classpath:config.properties" />
<util:properties id="properties" location="classpath:config.properties"/>

<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="web.controller" />
<mvc:annotation-driven/>


<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="${baseView}"/>
<property name="defaultEncoding" value="utf-8"/>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">10</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="APP" value=""></entry>
<entry key="clearPercentStr" value-ref="fmFilterStr" />
<entry key="res" value-ref="simpleAutoAddTime" />
</map>
</property>
</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="suffix" value="${viewEnd}"/> <property name="contentType" value="text/html;charset=utf-8"/> <property name="exposeRequestAttributes" value="true"/> <property name="exposeSessionAttributes" value="true"/> <property name="exposeSpringMacroHelpers" value="true"/></bean><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding"> <value>UTF-8</value> </property> <property name="maxUploadSize"> <value>32505856</value><!-- 上传文件大小限制为31M,31*1024*1024 --> </property> <property name="maxInMemorySize"> <value>4096</value> </property></bean><mvc:default-servlet-handler /><mvc:interceptors> <bean class="web.interceptor.UserLoginInterceptor"></bean> <bean class="web.interceptor.CommonInterceptor"></bean></mvc:interceptors><bean id="viewNameTranslator" class="web.util.ConventionViewNameTranslator"></bean>



/**
* 按照约定俗成的方式去定义视图名称
*
* @author
*/
public class ConventionViewNameTranslator extends DefaultRequestToViewNameTranslator {

/**
* Transform the request URI (in the context of the webapp) stripping
* slashes and extensions, and replacing the separator as required.
*
* @param lookupPath the lookup path for the current request, as determined
* by the UrlPathHelper
* @return the transformed path, with slashes and extensions stripped if
* desired
*/
@Override
protected String transformPath(String lookupPath) {
String path = lookupPath;
if (path.startsWith("/")) {
path = path.substring(1);
}
if (path.endsWith("/")) {
path = path + "index";
}
if (true) {
path = StringUtils.stripFilenameExtension(path);
}
return path;
}

*************************************************************************************************************************************************
Spring配置
<!-- 引入属性文件 -->
<context:property-placeholder location="classpath:config.properties" />

<!-- 自动扫描(自动注入) -->
<context:component-scan base-package="要扫描的包" />

<cache:annotation-driven cache-manager="cacheManager" />
<!-- Spring自己的基于java.util.concurrent.ConcurrentHashMap实现的缓存管理器(该功能是从Spring3.1开始提供的) -->
<!-- <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches"> <set> <bean name="myCache" class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"/>
</set> </property> </bean> -->
<!-- 若只想使用Spring自身提供的缓存器,则注释掉下面的两个关于Ehcache配置的bean,并启用上面的SimpleCacheManager即可 -->
<!-- Spring提供的基于的Ehcache实现的缓存管理器 -->
<bean id="cacheManagerFactory"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="cacheManagerFactory" />
</bean>
<bean id="msgService" class="web.service.impl.MsgServiceImpl">
<constructor-arg value="${msg_ip}" /> <!--构造器注入-->
<constructor-arg value="${msg_port}" />
<constructor-arg value="${msg_account}" />
<constructor-arg value="${msg_token}" />
<constructor-arg value="${msg_appid}" />
<property name="validMsgCodeLength" value="6" />
<property name="validMsgTemplate" value="12133" />
<property name="validMsgTemplateBuy" value="67320" />
<property name="validMsgTemplateOut" value="67322" />
<property name="validMsgTemplateBuyProduct" value="76811" />
<property name="validMsgTemplateOutMoney" value="76807" />
<property name="validMsgMaxSendTimes" value="6" />
</bean>
<!--定时器->

以下来源 摘自 http://www.cnblogs.com/zzti08/p/5203213.html

<!---这些星号由左到右按顺序代表 : * * * * * * *
格式: [秒] [分] [小时] [日] [月] [周] [年]
是否必填 允许填写的值 允许的通配符

1 秒 是 0-59 , - * /
2 分 是 0-59
, - * /
3 小时 是 0-23 , - * /
4 日 是 1-31 , - * ? / L W
5 月 是 1-12 or JAN-DEC , - * /
6 周 是 1-7 or SUN-SAT , - * ? / L #
7 年 否 empty 或 1970-2099 , - * /


通配符说明:
* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。
? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?
- 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。
, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。在月字段上设置‘1/3‘所示每月1号开始,每隔三天触发一次。
L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本 月最后一个星期五"
W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").

小提示
‘L‘和 ‘W‘可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发(一般指发工资 )


# 序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了)

小提示
周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.




常用示例:


0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
每天下午的 18点到18点59分(整点开始,每隔5分触发)

0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 (特殊情况,在一个时间设置里,执行两次或 两次以上的情况)
0 59 2 ? * FRI 每周5凌晨2点59分触发;
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)


-->


<bean id="cron" class="web.util.timertask.Cron4jUtil" init-method="init" destroy-method="destroy">
<property name="taskMap">
<map>
<entry key="* * * * *" value-ref="dayOnceTask">
</entry>
</map>
</property>
</bean>

<bean id="dayOnceTask" class="web.tasks.DayOnceTask">
<property name="tasks">

<!--使用定时器,接口注入,接口注入list-->  
  <list>
<!-- 实现类,可以继承Runnable来实现,注入的时候,注入到List<Runnable>,实现Runnable的run方法,进而达到了定时器的作用-->
<bean class="web.service.impl.ProductEarnTaskServiceImpl"></bean>
<bean class="web.service.impl.ScatteredEarnTaskServiceImpl"></bean>
<bean class="web.service.impl.RegisterProductEarnTaskServiceImpl"></bean>
<bean class="web.service.impl.RegisterActivityByEndDateStatusImpl"></bean>
</list>
</property>
</bean>
<bean id="ScatteredConfigUtil" class="web.util.business.ScatteredConfigUtil">
<property name="standardTypeMap">
<!--map注入--> 
     <map>
<entry key="0" value="值1" />
<entry key="1" value="值2" />
</map>
</property>
<property name="otherTypeMap">
<map>
<entry key="0" value="值3" />
<entry key="1" value="值4" />
<entry key="2" value="值5" />
<entry key="3" value="值6" />
</map>
</property>
</bean>
<!--七牛云存储 构造器注入-->
<bean id="qiniuAuth" class="com.qiniu.util.Auth"  factory-method="create">
<constructor-arg value="值1"/>
<constructor-arg value="值2"/>
</bean>

*************************************************************************************************************************************************

mybatis配置

<!-- 配置数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />

<!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" />
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="20" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />

<!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->

<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />

<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />

<!-- 监控数据库 -->
<!-- <property name="filters" value="stat" /> -->
<property name="filters" value="mergeStat" />
</bean>
<!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="mapperLocations" value="classpath:net/tcjr/web/mapper/*.xml" />
</bean>
<!--自动扫描DAO-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="web.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 注解方式配置事物 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->

<!-- 拦截器方式配置事物 切面-->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="edit*" propagation="REQUIRED" />

       <tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="*" propagation="SUPPORTS" />

 </tx:attributes>
</tx:advice>
<!-- 第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包web.service下的任意class
第三个 * —— 通配 包web.service下的任意class的任意方法
第四个 .. —— 通配 方法可以有0个或多个参数-->
<!-- 切面-->


<!--1、Advisor:充当Advice和Pointcut的适配器,类似使用Aspect的@Aspect注解的类(前一章节所述)。一般有advice和pointcut属性。
祖先接口为org.springframework.aop.Advisor,应用中可直接使用org.springframework.aop.support.DefaultPointcutAdvisor
2、Advice:用于定义拦截行为,祖先接口为org.aopalliance.aop.Advice,该接口只是标识接口,应用中可直接实现BeforeAdvice ,ThrowsAdvice,MethodInterceptor ,AfterReturningAdvice ,IntroductionInterceptor 等子接口
3、Pointcut:用于定义拦截目标集合,祖先接口为org.springframework.aop.Pointcut-->


<aop:config>
<!-- 切点-->

<aop:pointcut id="transactionPointcut" expression="execution(* web.service..*Impl.*(..))" />

<!--将切面和切点关联起来-->
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>

<!-- 配置druid监控spring jdbc -->
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>
<!--service扫秒-->
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
<property name="patterns">
<list>
<value>web.service.impl.*</value>
</list>
</property>
</bean>
<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>

spring 配置

标签:

原文地址:http://www.cnblogs.com/tdf-/p/5671296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!