学习淘淘商城第一百零五课(定时任务---Quartz)
2017-06-19 21:32
393 查看
一、什么是Quartz
Quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至好几万个Jobs这样复杂的日程程序表。Jobs可以做成标准的Java组件或EJBs。
Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件的系统。
Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
二、Quartz的使用
2.1 下载
官方网站:http://quartz-scheduler.org/,可以从官方网站下载quartz的最新版本。(如果是用Maven的话,2.1步是不需要的)
2.2 Quartz与Spring结合
关于依赖某个jar包,我们最好在taotao-parent工程统一定下版本号,如下图所示。
添加的代码如下,如果以前已经添加的话,就不用重复添加了。
<quartz.version>2.2.2</quartz.version>
依赖代码如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- quartz任务调度框架 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency> 下面我们先来看一张图,每个jobDetail中包含一个Job,每个Trigger包含一个jobDetail以及cron表达式(触发的时机),一个Scheduler包含多个Trigger。
第二步:写一个job类。是一个普通的java类
代码如下:
package com.taotao.order.job;
public class OrderJob {
//执行任务
public void execute(){
System.out.println("任务已经执行。。。。。");
}
}
第三步:在spring的配置文件中配置一个jobDetail,需要引用job bean
第四步:在spring的配置文件中配置一个Trigger,指定任务触发时机需要使用cron表达式。需要jobDetail引用。
第五步:在spring的配置文件中配置一个scheduler,在此list中可以配置多个trigger。
applicationContext-quartz.xml文件的内容如下,其中job、jobDetail、trigger是一套,如果大家还想再配一套的话,就复制这这项配置稍微修改下,然后在配置调度框架中新添加一套。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- 配置job类 -->
<bean id="orderJob" class="com.taotao.order.job.OrderJob"/>
<!-- 配置JobDetail -->
<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="orderJob"/>
</property>
<property name="targetMethod">
<value>execute</value> <!-- value的值必须与我们定义的job类的方法名一致 -->
</property>
</bean>
<!-- 配置一个trigger -->
<bean id="cronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="springQtzJobMethod"></property>
<property name="cronExpression" value="0/5 * * * * ?"></property>
</bean>
<!-- 配置调度框架 -->
<bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerFactoryBean"/>
</list>
</property>
</bean>
</beans> 下面我们来测试一下,如果我们修改了taotao-parent工程的pom.xml文件的话,我们需要重新将taotao-parent工程打包到本地maven仓库。
我们来启动taotao-order工程,启动它会自动执行定时器任务。如下图所示,可以看到每隔5秒就会打印一下消息,说明我们的定时任务成功了。
关于cron表达式,大家可以参考http://blog.csdn.net/u012453843/article/details/53153288这篇博客进行学习。
Quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至好几万个Jobs这样复杂的日程程序表。Jobs可以做成标准的Java组件或EJBs。
Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件的系统。
Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
二、Quartz的使用
2.1 下载
官方网站:http://quartz-scheduler.org/,可以从官方网站下载quartz的最新版本。(如果是用Maven的话,2.1步是不需要的)
2.2 Quartz与Spring结合
关于依赖某个jar包,我们最好在taotao-parent工程统一定下版本号,如下图所示。
添加的代码如下,如果以前已经添加的话,就不用重复添加了。
<quartz.version>2.2.2</quartz.version>
<!-- quartz任务调度框架 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${quartz.version}</version> </dependency>为了使用quartz的功能,我们在taotao-order-service工程添加对quartz以及spring-context-support的依赖,如下图所示。
依赖代码如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- quartz任务调度框架 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency> 下面我们先来看一张图,每个jobDetail中包含一个Job,每个Trigger包含一个jobDetail以及cron表达式(触发的时机),一个Scheduler包含多个Trigger。
第二步:写一个job类。是一个普通的java类
代码如下:
package com.taotao.order.job;
public class OrderJob {
//执行任务
public void execute(){
System.out.println("任务已经执行。。。。。");
}
}
第三步:在spring的配置文件中配置一个jobDetail,需要引用job bean
第四步:在spring的配置文件中配置一个Trigger,指定任务触发时机需要使用cron表达式。需要jobDetail引用。
第五步:在spring的配置文件中配置一个scheduler,在此list中可以配置多个trigger。
applicationContext-quartz.xml文件的内容如下,其中job、jobDetail、trigger是一套,如果大家还想再配一套的话,就复制这这项配置稍微修改下,然后在配置调度框架中新添加一套。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- 配置job类 -->
<bean id="orderJob" class="com.taotao.order.job.OrderJob"/>
<!-- 配置JobDetail -->
<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="orderJob"/>
</property>
<property name="targetMethod">
<value>execute</value> <!-- value的值必须与我们定义的job类的方法名一致 -->
</property>
</bean>
<!-- 配置一个trigger -->
<bean id="cronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="springQtzJobMethod"></property>
<property name="cronExpression" value="0/5 * * * * ?"></property>
</bean>
<!-- 配置调度框架 -->
<bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerFactoryBean"/>
</list>
</property>
</bean>
</beans> 下面我们来测试一下,如果我们修改了taotao-parent工程的pom.xml文件的话,我们需要重新将taotao-parent工程打包到本地maven仓库。
我们来启动taotao-order工程,启动它会自动执行定时器任务。如下图所示,可以看到每隔5秒就会打印一下消息,说明我们的定时任务成功了。
关于cron表达式,大家可以参考http://blog.csdn.net/u012453843/article/details/53153288这篇博客进行学习。
相关文章推荐
- JavaEE进阶知识学习-----定时任务调度Quartz-3
- JavaEE进阶知识学习-----定时任务调度Quartz-4
- 基于Quartz实现定时任务-框架学习
- Quartz定时任务学习及属性文件和jar
- Spring集成Quartz定时任务框架学习
- 学习定时任务(Quartz)
- Quartz定时任务学习(五)触发器
- 跟着实例学习java多线程10-定时任务实例Quartz等
- 关于学习SpringMvc整合QuartZ定时管理任务的初步整理
- Quartz定时任务学习(一)简单任务
- Quartz定时任务学习
- JavaEE进阶知识学习-----定时任务调度Quartz-1
- spring学习笔记--quartz和定时任务执行
- SpringBoot学习-持久化Quartz定时任务管理
- Quartz.net 2.x 学习笔记03-使用反射加载定时任务
- 关于学习SpringMvc整合QuartZ定时管理任务的持久化管理
- JavaEE进阶知识学习-----定时任务调度Quartz-2
- quartz定时任务调度学习
- Quartz定时任务学习
- 定时任务,quartz的demo