Quartz入门简单案例

JAVA学习网 2018-01-20 06:50:02

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 }

执行结果:

 

阅读(799) 评论(0)