歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring集成Quartz定時任務框架介紹和Cron表達式詳解

在JavaEE系統中,我們會經常用到定時任務,比如每天凌晨生成前天報表,每一小時生成匯總數據等等。
我們可以使用java.util.Timer結合java.util.TimerTask來完成這項工作,但時調度控制非常不方便,並且我們需要大量的代碼。

使用Quartz框架無疑是非常好的選擇,並且與Spring可以非常方便的集成,下面介紹它們集成方法和Cron表達式的詳細介紹。

一、增加所依賴的JAR包
1、增加Spring的Maven依賴

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>


2、增加Quartz的Maven依賴

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.4</version>
</dependency>

二、增加定時業務邏輯類

  publicclass ExpireJobTask {
/** Logger */
privatestaticfinal Logger logger = LoggerFactory.getLogger(ExpireJobTask.class);

/**
* 業務邏輯處理
*/
publicvoid doBiz() {
// 執行業務邏輯
// ........
}
}
ExpireJobTask業務邏輯類與一般普通的類沒有任務區別,它定義的doBiz方法即為調度業務方法。

三、增加Spring配置
1、增加一個線程池

  <!-- 線程執行器配置,用於任務注冊 -->
<bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10"/>
<property name="maxPoolSize" value="100"/>
<property name="queueCapacity" value="500"/>
</bean>  


2、定義業務邏輯處理類

<!-- 業務對象 -->
<bean id="bizObject" class="com.aboy.potak.common.toolkit.scheduling.ExpireJobTask"/>


3、增加調度業務邏輯

<!-- 調度業務 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="bizObject"/>
<property name="targetMethod" value="doBiz"/>
</bean>


上面的配置中,我們以bizObject.doBiz方法為將要調度的業務執行邏輯。
4、增加調度觸發器

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression" value="10 0/1 * * * ?"/>
</bean>


Cron表達式“10 */1 * * * ?”意為:從10秒開始,每1分鐘執行一次。

<bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="startDelay" value="10000"/>
<property name="repeatInterval" value="60000"/>
</bean>


該調度表示,延遲10秒啟動,然後每隔1分鐘執行一次。
5、增加調度

  <!-- 設置調度 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<property name="taskExecutor" ref="executor"/>
</bean>
triggers屬性中,我們可以增加多個觸發器。

到此,Spring已經與Quartz完美的結合了,我們接下來的工作就是啟動系統,開始調度了。

Copyright © Linux教程網 All Rights Reserved