Quartz是一个任务调度框架。它可以在你指定的时间内去触发某一个任务。
案例:
这里的案例是基于Quartz 2.2.3、Maven、spring去开发完成的。
在pom.xml文件中引入Maven相关依赖
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>cn.wy</groupId> 5 <artifactId>FristQuartz</artifactId> 6 <version>0.0.1-SNAPSHOT</version> 7 <!-- 通过属性定义指定jar的版本 --> 8 <properties> 9 <spring.version>4.2.4.RELEASE</spring.version> 10 <slf4j.version>1.6.6</slf4j.version> 11 <log4j.version>1.2.12</log4j.version> 12 </properties> 13 14 <dependencies> 15 <dependency> 16 <groupId>org.springframework</groupId> 17 <artifactId>spring-context</artifactId> 18 <version>${spring.version}</version> 19 </dependency> 20 <dependency> 21 <groupId>org.springframework</groupId> 22 <artifactId>spring-context-support</artifactId> 23 <version>${spring.version}</version> 24 </dependency> 25 <dependency> 26 <groupId>org.springframework</groupId> 27 <artifactId>spring-orm</artifactId> 28 <version>${spring.version}</version> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-beans</artifactId> 33 <version>${spring.version}</version> 34 </dependency> 35 <dependency> 36 <groupId>org.springframework</groupId> 37 <artifactId>spring-core</artifactId> 38 <version>${spring.version}</version> 39 </dependency> 40 <dependency> 41 <groupId>org.aspectj</groupId> 42 <artifactId>aspectjweaver</artifactId> 43 <version>1.7.4</version> 44 </dependency> 45 <!-- log start --> 46 <dependency> 47 <groupId>log4j</groupId> 48 <artifactId>log4j</artifactId> 49 <version>${log4j.version}</version> 50 </dependency> 51 <dependency> 52 <groupId>org.slf4j</groupId> 53 <artifactId>slf4j-api</artifactId> 54 <version>${slf4j.version}</version> 55 </dependency> 56 57 <dependency> 58 <groupId>org.slf4j</groupId> 59 <artifactId>slf4j-log4j12</artifactId> 60 <version>${slf4j.version}</version> 61 </dependency> 62 <!-- 引入junit支持 --> 63 <dependency> 64 <groupId>junit</groupId> 65 <artifactId>junit</artifactId> 66 <version>4.10</version> 67 <scope>test</scope> 68 </dependency> 69 70 <!-- 引入quartz对应的依赖 --> 71 <dependency> 72 <groupId>org.quartz-scheduler</groupId> 73 <artifactId>quartz</artifactId> 74 <version>2.2.3</version> 75 </dependency> 76 <dependency> 77 <groupId>org.quartz-scheduler</groupId> 78 <artifactId>quartz-jobs</artifactId> 79 <version>2.2.3</version> 80 </dependency> 81 </dependencies> 82 </project>
第一步:创建一个作业类
1 package cn.wy.test; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 /** 6 * 自定义作业类 7 */ 8 public class TestJob { 9 public void run(){//方法名可以任意取 10 System.out.println("自定义的作业类型执行了:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); 11 } 12 }
第二步:配置applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> <!-- 注册自定义作业类 --> <bean id="testJob" class="cn.wy.test.TestJob"></bean> <!-- 配置JobDetail --> <bean id="jobDeteil" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 注入目标对象 --> <property name="targetObject" ref="testJob" /> <!-- 注入目标方法 --> <property name="targetMethod" value="run" /> </bean> <!-- 配置Trigger触发器 --> <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 注入任务详情对象 --> <property name="jobDetail" ref="jobDeteil" /> <!-- 注入cronExpression表达式,通过这个表达式指定出发的时间 --> <property name="cronExpression"> <!-- 3秒后触发,也就是相当于是TestJob类中的run方法每隔3秒执行一次 --> <value>0/3 * * * * ?</value> </property> </bean> <!-- 配置调度工厂 --> <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 注入Trigger触发器 --> <property name="triggers"> <list> <ref bean="myTrigger" /> <!-- 可以同时配置多个触发器 --> </list> </property> </bean> </beans>
第三步:测试
1 package cn.wy.test; 2 3 import org.springframework.context.support.ClassPathXmlApplicationContext; 4 5 public class Test { 6 public static void main(String[] args) { 7 new ClassPathXmlApplicationContext("applicationContext.xml"); 8 } 9 }
执行结果: