[转]ssh中如何实现定时任务(spring对quartz的支持)
原文地址:http://blog.csdn.net/qq_18675693/article/details/50413889
实现定时任务:quartz
spring中对quartz进行了封装,使得我们可以直接在配置文件中配置bean就可以使用quartz的定时任务
首先在spring中使用quartz需要引入的包:
org.springframework.context.support-3.0.2.RELEASE.jar(spring中)
quartz-1.8.6.jar(此为外包,独立下载,spring只是在上面jar包中对quartz做了bean封装,使用可以通过配置spring文件的方式来控制定时任务)
附:文本样式
<!-- 指定任务的类,方法,是否可同步(即上次为执行完毕的方法是否可以继续执行,true,允许) -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="complainService"></property>
<property name="targetMethod" value="autoDealUndealComplains"></property>
<property name="concurrent" value="false"></property>
</bean>
<!-- 设置任务的启动时机(任务触发器) -->
<bean id="complainCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"></property>
<!-- 表达式 (秒 分 时 日 月 周 年)日与周不可以同时出现 ,年可省略 表示:每月的最后一天的23:59:59触发任务 -->
<property name="cronExpression" value="0 * * L * ?"></property>
</bean>
<!-- 触发器的调度工厂,可以调度多个任务触发器 -->
<bean id="complainScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="complainCronTrigger"/>
</list>
</property>
</bean>
文中的id为complainService的bean,就是一个普通的java类
cron表达式用法介绍:
格式:
秒 分 时 日 月 周 年
空格分开
日和周不能同时出现,一个出现另一个用?代替
年可以省略(不用的情况下)
通配符 * / - L W #
*:可以防止与任意位置,表示任意
/:表示切分 秒位置:2/5,表示2秒后每隔5秒
-:指定某一范围a-b
L:日 的位置,表示月的最后一天
W:匹配最近的工作日。左右两侧最近的日期
如:15W(日 位置),配置离15号最近的工作日,如下结果为16号
14 15 16 17
周六 周日 周一 周二
LW:表示当前月最后一个工作日
#:用于“周”6#3—->该月第3个周五(ps:6代表周五,因为老外的星期是从sun开始,索引1)