Spring定时任务的实现方式--Quartz
2016-11-04 18:27
513 查看
首先准备相应的jar包:
如果是maven工程,直接引入相关的依赖包:
或者直接下载相关的jar包:
quartz-1.8.6.jar spring-context-support-3.2.0.RELEASE.jar
特别注意一点,与Spring3.1以下版本整合必须使用Quartz1,最初我拿2.0.2的,怎么搞都报错(参考:http://blog.csdn.net/qq_32786873/article/details/53037908)
方式一:作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean
1.编写作业类,继承QuartzJobBean
2.spring配置文件中配置作业类JobDetailBean
3.配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
配置方式如下:
关于cronExpression表达式的值,参考:http://blog.csdn.net/qq_32786873/article/details/53010550
4.配置调度工厂
说明:该参数指定的就是之前配置的触发器的名字
5.启动应用
使用触发器SimpleTriggerBean,输出结果:
方式二:作业类不继承特定基类。
1.编写作业类
2.配置作业类
3.配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
配置方式如下:
4.配置调度工厂
说明:该参数指定的就是之前配置的触发器的名字
5.启动应用
使用触发器SimpleTriggerBean,输出结果:
使用触发器CronTriggerBean,输出结果:
如果是maven工程,直接引入相关的依赖包:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
或者直接下载相关的jar包:
quartz-1.8.6.jar spring-context-support-3.2.0.RELEASE.jar
特别注意一点,与Spring3.1以下版本整合必须使用Quartz1,最初我拿2.0.2的,怎么搞都报错(参考:http://blog.csdn.net/qq_32786873/article/details/53037908)
方式一:作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean
1.编写作业类,继承QuartzJobBean
package com.Solin.Timer; import java.util.Date; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class QuartzJob1 extends QuartzJobBean{ private int timeout; public void setTimeout(int timeout) { this.timeout = timeout; } @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { String dog = (String)context.getMergedJobDataMap().get("dog"); System.out.println(new Date()+"定时任务执行中…"+"---timeout="+this.timeout+"---dog:"+dog); } }
2.spring配置文件中配置作业类JobDetailBean
<!--方式一:使用JobDetailBean,任务类必须继承QuartzJobBean类 --> <bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.Solin.Timer.QuartzJob1" /> <property name="jobDataAsMap"> <map> <entry key="timeout" value="2" /> <entry key="dog" value="This is dog!" /> </map> </property> </bean>
3.配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
<!-- ======================== 调度触发器 ======================== --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="job1" /> <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 --> <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 --> </bean>第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
配置方式如下:
<!-- ======================== 调度触发器 ======================== --> <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <span style="white-space:pre"> </span><property name="jobDetail" ref="job1"></property> <!-- 每5秒运行一次 --> <property name="cronExpression" value="0/5 * * * * ?"></property> </bean>
关于cronExpression表达式的值,参考:http://blog.csdn.net/qq_32786873/article/details/53010550
4.配置调度工厂
<!-- ======================== 调度工厂 ======================== --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean>
说明:该参数指定的就是之前配置的触发器的名字
5.启动应用
使用触发器SimpleTriggerBean,输出结果:
Fri Nov 04 18:17:50 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:17:52 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:17:54 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:17:56 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:17:58 CST 2016定时任务执行中…---timeout=2---dog:This is dog!使用触发器CronTriggerBean,输出结果:
Fri Nov 04 18:26:55 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:27:00 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:27:05 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:27:10 CST 2016定时任务执行中…---timeout=2---dog:This is dog! Fri Nov 04 18:27:15 CST 2016定时任务执行中…---timeout=2---dog:This is dog!
方式二:作业类不继承特定基类。
1.编写作业类
package com.Solin.Timer; import java.util.Date; public class QuartzJob2 { public void doJob2() { System.out.println(new Date()+" 不继承QuartzJobBean方式-调度进行中..."); } }
2.配置作业类
<!-- 方式二:使用MethodInvokingJobDetailFactoryBean,任务类可以不继承QuartzJobBean类,通过targetMethod指定调用方法--> <bean id="job2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <bean class="com.Solin.Timer.QuartzJob2" /> </property> <property name="targetMethod" value="doJob2" /><!-- 要执行的方法名称 --> <property name="concurrent" value="false" /><!-- 作业不并发调度 --> </bean>
3.配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
<!-- ======================== 调度触发器 ======================== --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="job2" /> <property name="startDelay" value="0" />调度工厂实例化后,经过0秒开始执行调度 <property name="repeatInterval" value="2000" />每2秒调度一次 </bean>第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
配置方式如下:
<!-- ======================== 调度触发器 ======================== --> <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="job2"></property> <!-- 每5秒运行一次 --> <property name="cronExpression" value="0/5 * * * * ?"></property> </bean>关于cronExpression表达式的值,参考:http://blog.csdn.net/qq_32786873/article/details/53010550
4.配置调度工厂
<!-- ======================== 调度工厂 ======================== --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean>
说明:该参数指定的就是之前配置的触发器的名字
5.启动应用
使用触发器SimpleTriggerBean,输出结果:
Fri Nov 04 18:41:33 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:41:35 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:41:37 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:41:39 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:41:41 CST 2016 不继承QuartzJobBean方式-调度进行中...
使用触发器CronTriggerBean,输出结果:
Fri Nov 04 18:43:50 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:43:55 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:44:00 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:44:05 CST 2016 不继承QuartzJobBean方式-调度进行中... Fri Nov 04 18:44:10 CST 2016 不继承QuartzJobBean方式-调度进行中...
相关文章推荐
- spring 定时任务(quartz方式实现)
- Spring + quartz 注解的方式实现定时任务
- spring实现定时任务的两种方式之Spring 3整合Quartz 2实现定时任务
- spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务
- spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务
- spring和quartz整合实现定时任务(配置文件配置方式
- Spring+Quartz实现定时任务的配置方法
- spring实现定时任务之Quartz 1
- Spring整合的quartz任务调度的实现方式
- 【转】Spring结合Quartz实现多任务定时调用
- 简单介绍Spring+Quartz实现定时任务的配置方法
- Quartz + Spring 简单实现定时任务
- spring使用Quartz实现定时任务
- Spring结合Quartz实现多任务定时调用
- Spring整合的quartz任务调度的实现方式
- Spring+Quartz实现定时任务的配置方法
- Spring+Quartz实现定时任务的配置方法
- Spring结合Quartz实现多任务定时调用
- Spring+Quartz实现定时任务的配置方法
- 使用spring quartz实现定时任务