spring 定时任务
1.定时任务实现方式有很多,java自带的定时器可以,但是不好用,基本不用。如果需求较为简单,可以考虑 Spring Task。如果更为负责,则可以考虑重量级的框架quartz。今天重点介绍quartz,quartz和 Spring 的集成方式有多种,有RAM 和 JDBC 方式。RAM方式可以理解为静态的方式,任务和触发方式均可配置式,JDBC方式可实现任务动态添加,启动,暂停,更加灵活,但是实现稍微复杂。接下来我们介绍一种RAM方式的实现方式。
2.jar 包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<spring.version>4.2.6.RELEASE</spring.version>
注意版本,不然会报JobDetailImpl ClassNotFound
3.实现
这是要执行任务
@Component("testTask") public class testTask { public void execute(){ System.out.println("计划任务开始执行。。。。。"); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); System.out.println("计划任务执行结束。。。。。"); } }
下面开始配置,其中 testCorn 是我配置的corn 表达式,配置的是每五秒执行一次。关于Corn表达式 可参考 http://cron.qqe2.com/ ,在线配置表达式,很方便,满足大部分需求。
<bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <!-- 要执行的类名 --> <ref bean="testTask"/> </property> <property name="targetMethod"> <!-- 要执行的方法名称 --> <value>execute</value> </property> </bean> <!--定义调度器 --> <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="SpringQtzJobMethod"></property> <property name="cronExpression" value="${testCorn}"></property> </bean> <!-- 调度工厂 --> <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="CronTriggerBean"/> </list> </property> </bean>
#定义corn表达式
testCorn=0/5 * * * * ?
4.执行结果