JAVA | Spring + quartz 實現定時任務

微信公衆號:一個優秀的廢人
如有問題或建議,請後臺留言,我會盡力解決你的問題。

前言

很久不見,因爲忙着泡妞,斷更了一個月,實在是罪過。廢話不多說,最近在工作中遇到了使用 quartz 實現定時任務的需求。寫出來分享給大家,權當筆記。

Spring + quartz 實現定時任務

因爲在開發中遇到的是非 Maven 的老項目,所以先介紹這種方式。這種實現方式更多的是 xml 的配置。

1.首先在 lib 目錄下加入 quartz 這l兩個jar包

quartz.jar

2.Scheduler(任務調度器)的配置

在 applicationContext.xml 加入 Scheduler 的配置

<bean id="MyScheduler"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="MyTriggers"></ref>
        </list>
    </property>
    <property name="autoStartup" value="true"></property>
</bean>

3.Trigger(觸發器)的配置,這裏設置了逢5分鐘的倍數執行一次

<bean id="MyTriggers"
        class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="MyJobDetail"></property>
    <property name="cronExpression">
        <!--<value>0 */1 * * * ?</value>-->
        <!--<value>0 */5 * * * ?</value>-->
        <!-- 早上八點執行 -->
        <!--<value>0 0 8 * * ?</value>-->
        <!-- 逢5分鐘的倍數執行一次 -->
        <value>0 */5 * * * ?</value>
    </property>
</bean>

4.JobDetail(任務,即被調度的任務)的配置

<bean id="MyJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 執行的類 -->
    <property name="targetObject" ref="MyJobService"></property>
        <!-- 類中的方法 -->
    <property name="targetMethod" value="doSomething"></property>
    <property name="concurrent" value="false"/>
    <!-- 是否允許任務併發執行。當值爲false時,表示必須等到前一個線程處理完畢後纔再啓一個新的線程 -->
</bean>

5.業務類的配置

<bean id="oltJobService" class="com.nasus.service.quartz.MyJobService">
    <property name="MyDao" ref="MyDao" />
        <!-- 注入屬性 -->
</bean>

6.業務實現

import java.util.Date;

public class MyJobService {

    public void doSomething() {
        System.out.println("date: " + new Date().getTime());
    }
}  

7.啓動項目就可以看到控制檯每隔五分鐘就打印一次當前時間

後語

以上就是我對 Spring + quartz 的使用理解,希望對你們有幫助。最後,對 Python 、Java 感興趣請長按二維碼關注一波,我會努力帶給你們價值,如果覺得本文對你哪怕有一丁點幫助,請幫忙點個贊。

一個優秀的廢人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章