标签:agg 参考资料 common 1.0 smd xms syn dsl ejs
最近公司新项目需要用到定时器,于是研究了一下发现:
Spring中使用Quartz有两种方式实现:
第二种则是在配置文件里定义任务类和要执行的方法,类和方法仍然是普通类。
很显然,第二种方式远比第一种方式来的灵活。
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
二种方式远比第一种方式来的灵活。
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
标签:agg 参考资料 common 1.0 smd xms syn dsl ejs
原文地址:http://www.cnblogs.com/IT-study/p/7940541.html