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

SpringQuartz 实现定时任务调度

时间:2017-12-01 11:44:20      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:agg   参考资料   common   1.0   smd   xms   syn   dsl   ejs   

 

最近公司新项目需要用到定时器,于是研究了一下发现:

Spring中使用Quartz有两种方式实现:

第一种是任务类继承QuartzJobBean

第二种则是在配置文件里定义任务类和要执行的方法,类和方法仍然是普通类。

很显然,第二种方式远比第一种方式来的灵活。

jar依赖

如果是maven项目

 

<!-- Spring-Quartz实现定时任务调度 -->
        <dependency>  
            <groupId>org.quartz-scheduler</groupId>  
            <artifactId>quartz</artifactId>  
            <version>1.8.5</version>  
        </dependency>  

 

非maven项目,下面是所需要的jar包

quartz-1.8.5.jar
commons-logging.jar
spring-core-3.0.5.RELEASE.jar
spring-beans-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
spring-context-support-3.0.5.RELEASE.jar
spring-asm-3.0.5.RELEASE.jar
spring-expression-3.0.5.RELEASE.jar
spring.transaction-3.0.5.RELEASE.jar
spring-web-3.0.5.RELEASE.jar

 

第一种任务类继承QuartzJobBean

二种方式远比第一种方式来的灵活。

1.定义java类继承QuartzJobBean

 

 1 package com.zhihuishu.qa.quartz;
 2 
 3 import org.quartz.JobExecutionContext;
 4 import org.quartz.JobExecutionException;
 5 import org.springframework.scheduling.quartz.QuartzJobBean;
 6 
 7 public class SpringQtz extends QuartzJobBean {
 8 
 9     /**
10     * 要调度的具体任务
11     */ 
12     @Override 
13     protected void executeInternal(JobExecutionContext context) 
14     throws JobExecutionException { 
15       System.out.println("继承QuartzJobBean定时任务执行中…"); 
16     }  
17 
18 }

 

2.定义spring配置文件 beans-quartz.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans
 6             http://www.springframework.org/schema/beans/spring-beans.xsd
 7                http://www.springframework.org/schema/context 
 8             http://www.springframework.org/schema/context/spring-context.xsd
 9             http://www.springframework.org/schema/aop 
10             http://www.springframework.org/schema/aop/spring-aop.xsd
11             http://www.springframework.org/schema/tx 
12             http://www.springframework.org/schema/tx/spring-tx.xsd">
13 
14 <!-- spring配置文件中配置作业类JobDetailBean -->
15     <bean name="springQtz" class="org.springframework.scheduling.quartz.JobDetailBean"> 
16     <property name="jobClass" value="com.zhihuishu.qa.quartz.SpringQtz" /> 
17     <property name="jobDataAsMap"> 
18        <map> 
19            <entry key="timeout" value="0" /> 
20        </map> 
21     </property> 
22     </bean>   
23     
24     
25     
26 <!-- 配置作业调度的触发方式(触发器) -->
27     
28     <!-- 每隔多少时间执行一次 -->
29     <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
30     <property name="jobDetail" ref="springQtz" /> 
31     <property name="startDelay" value="0" /> <!-- 调度工厂实例化后,经过0秒开始执行调度  -->
32     <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 --> 
33     </bean>  
34     
35     <!-- 某个时间点执行一次 -->
36     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
37     <property name="jobDetail" ref="springQtz" /> 
38     <!-- 每天12:00运行一次 --> 
39     <property name="cronExpression" value="0 0 19 * * ? *" /> 
40     </bean>  
41     
42 <!--     配置调度工厂 -->
43 
44     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
45     <property name="triggers"> 
46     <list> 
47     <ref bean="simpleTrigger" /> 
48     </list> 
49     </property> 
50     </bean>  
51     
52 </beans>

 

SpringQuartz 时间配置,使用在线Cron表达式生成器
http://cron.qqe2.com/

执行结果:

技术分享图片

 

 

第二种在配置文件里定义任务类和要执行的方法,类和方法仍然是普通类。

二种方式远比第一种方式来的灵活。

1.定义java普通类

 

 1 package com.zhihuishu.qa.quartz;
 2 
 3 public class SpringQtz2 {
 4 
 5     /**
 6     * 要调度的具体任务 (方法名任意)
 7     */ 
 8     protected void executeTask(){ 
 9       System.out.println("普通类定时任务执行中…"); 
10     }  
11     
12 }

2.定义spring配置文件 beans-quartz2.xml

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans
 6             http://www.springframework.org/schema/beans/spring-beans.xsd
 7                http://www.springframework.org/schema/context 
 8             http://www.springframework.org/schema/context/spring-context.xsd
 9             http://www.springframework.org/schema/aop 
10             http://www.springframework.org/schema/aop/spring-aop.xsd
11             http://www.springframework.org/schema/tx 
12             http://www.springframework.org/schema/tx/spring-tx.xsd">
13 
14     <!-- 定义目标bean和bean中的方法 -->
15     <bean id="SpringQtzBean" class="com.zhihuishu.qa.quartz.SpringQtz2" />
16     <!-- 方式二:使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法 -->
17     <bean id="SpringQtzJobMethod"
18         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
19         <property name="targetObject">
20             <ref bean="SpringQtzBean" />
21         </property>
22         <property name="targetMethod">  <!-- 要执行的方法名称 -->
23             <value>executeTask</value>
24         </property>
25     </bean>
26 
27     <!-- 配置作业调度的触发方式(触发器) -->
28 
29     <!-- 每隔多少时间执行一次 -->
30     <bean id="simpleTrigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
31         <property name="jobDetail" ref="SpringQtzJobMethod" />
32         <property name="startDelay" value="0" /> <!-- 调度工厂实例化后,经过0秒开始执行调度 -->
33         <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->
34     </bean>
35 
36     <!-- 某个时间点执行一次 -->
37     <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerBean">
38         <property name="jobDetail" ref="SpringQtzJobMethod" />
39         <!-- 每天12:00运行一次 -->
40         <property name="cronExpression" value="0 0 19 * * ? *" />
41     </bean>
42 
43     <!-- 配置调度工厂 -->
44     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
45         <property name="triggers">
46             <list>
47                 <ref bean="simpleTrigger2" />
48             </list>
49         </property>
50     </bean>
51 
52 </beans>

 

SpringQuartz 时间配置,使用在线Cron表达式生成器
http://cron.qqe2.com/

执行结果:

技术分享图片

 

 

参考资料来源:http://blog.csdn.net/u013314786/article/details/51331554

 

SpringQuartz 实现定时任务调度

标签:agg   参考资料   common   1.0   smd   xms   syn   dsl   ejs   

原文地址:http://www.cnblogs.com/IT-study/p/7940541.html

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