Quartz入門簡單案例,quartz入門
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 }
執行結果: