spring 定时任务的实现
1: 应用场景
* 定时分析下日志
* 定时统计基础数据信息,为报表统计准备数据
* 定时清理垃圾数据
* 定时检测档案的完整性
* 。。。。。
2:实现方式(采用第三方组件 Quartz实现定时任务)
2.1 搭建环境 引入jar包
* spring相关jar包 spring-context-support-4.2.1.RELEASE.jar
* quartz相关的包(4.0以上的spring版本 对应Quartz的2.2.1及以上的版本)
--spring-context-support-4.2.1.RELEASE.jar //此包是spring对插件的支持包
-- quartz-2.2.1.jar
-- quartz-jobs-2.2.1.jar
-- slf4j-log4j12-1.6.6.jar
-- slf4j-api-1.6.6.jar
-- log4j-1.2.16.jar
-- c3p0-0.9.1.1.jar
2.2 编写简单任务实现类(pojo)
详见代码SimpleQuartzTest.java
applicationContext-job.xml
<!-- 配置定时任务第一种方式 -->
<!-- 注册目标Bean -->
<bean id= "myJob" class ="com.shubiao.jobs.MyJobs01"></ bean>
<!-- 配置目标方法 -->
<bean id= "targetmethod" class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
<!-- 应用目标对象 -->
<property name ="targetObject" ref="myJob"></ property>
<!-- 应用目标方法 -->
<property name ="targetMethod">
<value >testjobs</value>
</property >
</bean>
<!-- 定时任务频率 -->
<bean id= "simpleTriggle" class= "org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" >
<property name ="jobDetail" ref="targetmethod"></ property>
<property name ="startDelay">
<value >2000 </value >
</property >
<property name ="repeatInterval">
<value >5000 </value >
</property >
</bean>
<!-- 调度任务工厂 -->
<bean id= "schedule" class= "org.springframework.scheduling.quartz.SchedulerFactoryBean" >
<property name ="triggers">
<array >
<ref bean ="simpleTriggle"/>
<ref bean ="cronTriggle"/>
</array >
</property >
</bean>
2.3 编写指定频率的任务实现类(extends QuartzJobBean)
<!-- 配置定时任务第二种方式 -->
<!-- 定义目标方法 -->
<bean id= "method" class= "org.springframework.scheduling.quartz.JobDetailFactoryBean" >
<property name ="jobClass" value= "com.shubiao.jobs.MyJobs02"></property >
</bean>
<!-- 定时任务的频率 -->
<bean id= "cronTriggle" class= "org.springframework.scheduling.quartz.CronTriggerFactoryBean" >
<property name ="jobDetail" ref="method"></ property>
<property name ="cronExpression" value="0/5 * * ? * TUE"></property>
</bean>