首頁 Java java教程 Spring+quartz的實作方式實例

Spring+quartz的實作方式實例

Jun 21, 2017 am 09:28 AM
spring 任務 基於 定時

      朋友的專案中有點問題。他那邊是Spring架構的,有一個比較簡單的需要定時的任務執行。在了解了他的需求之後,於是提出了一個比較簡單的Spring+quartz的實作方式。

      注意本文只是討論,在已搭建完畢的Spring工程下,完成最簡單的計時任務。

      第一步,要知道Spring這個架構,很有趣很有趣。可以做到自由插拔功能模組的效果。工程專案是基於MAVEN套件依賴管理的,所以把這次需要的依賴套件引用列出來:

 1 <!-- 定时器依赖 开始 --> 2 <dependency> 3 <groupId>org.springframework</groupId> 4 <artifactId>spring-context-support</artifactId> 5 <version>4.0.2.RELEASE</version> 6 </dependency> 7  8   9 10 <dependency>11 <groupId>org.quartz-scheduler</groupId>12 <artifactId>quartz</artifactId>13 <version>2.2.1</version>14 </dependency>15 <!-- 定时器依赖 结束 -->
登入後複製

當然,這是要跟對應的Spring的版本是要匹配的。我們這裡的工程是4.0.2。前一個套件spring-context-support,主要的功能是作為Spring與quartz的溝通管理的部件,如果註解掉就會報這樣的錯誤

## 在MAVEN配置完所需要添加的包之後(其他的包,這裡暫時不擴展開說了,本文只討論在完整Spring工程項目下的配置),我們就可以開始動手給這個項目添加,定時任務的功能模組了。

第二步,從web的專案的起源,web.xml 中改動做起。由於原本的專案Spring的設定檔是Spring-mvc.xml,我這裡就把定時任務的設定檔改成了spring-time.xml。這樣就可以透過同一個掃描的配置在啟動的時候去讀取了。特定的程式碼如下:

1 <context-param>2         <param-name>contextConfigLocation</param-name>3         <param-value>classpath:spring-*.xml</param-value>4     </context-param>
登入後複製
接著請大家看我的工程架構:

                       

     透過這樣的配置,專案就會知道怎麼去呼叫了。實現了這一步接下來我們就可以繼續往下走了;

 

    第三步,就是要完成spring-timer.xml這個定時任務的核心配置了。在這個文件配置中,我們主要是完成三件事情:

  1.配置啟動的設置,關於懶加載(簡單說一下,比如把某個變量初始化為null,也是一種懶加載,也就是在服務啟動之後,只有在實際被呼叫的時候才會實例化,否則是不會在記憶體中存在的,只是邏輯上的。 ,此處不再詳細解說),以及觸發器的配置;

  2.quartz-2.x的配置,包含定時任務觸發之後要調用的job的名字,以及corn表達式(即定時表達式,控製程式在何時重複執行的原因,本次在會在後續補充關於cron表達式的內容);

  3.配置job的內容和job對應的具體的類別。

好了邏輯流程解說完畢,上程式碼:

 1 <?xml version="1.0" encoding="UTF-8"?>   2 <beans xmlns="http://www.springframework.org/schema/beans"   3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  4     xmlns:p="http://www.springframework.org/schema/p"   5     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 6      ">   7    8         <!-- 启动触发器的配置开始 -->   9     <bean name="startQuertz" lazy-init="false" autowire="no"  10         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  11         <property name="triggers">  12             <list>  13                 <ref bean="myJobTrigger" />  14             </list>  15         </property>  16     </bean>  17     <!-- 启动触发器的配置结束 -->  18   19     <!-- 调度的配置开始 -->  20     <!--  21         quartz-1.8以前的配置   
22     <bean id="myJobTrigger"  
23         class="org.springframework.scheduling.quartz.CronTriggerBean">  
24         <property name="jobDetail">  
25             <ref bean="myJobDetail" />  
26         </property>  
27         <property name="cronExpression">  
28             <value>0/1 * * * * ?</value>  
29         </property>  
30     </bean>  
31     -->  32     <!-- quartz-2.x的配置 -->  33     <bean id="myJobTrigger"  34         class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  35         <property name="jobDetail">  36             <ref bean="myJobDetail" />  37         </property>  38         <property name="cronExpression">  39         40         <value>0/10 * *  * * ?</value>41           <!--   <value>1 52 * * * ?</value>  --> 42         </property>  43     </bean>  44     <!-- 调度的配置结束 -->  45   46     <!-- job的配置开始 -->  47     <bean id="myJobDetail"  48         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  49         <property name="targetObject">  50             <ref bean="myJob" />  51         </property>  52         <property name="targetMethod">  53             <value>work</value>  54         </property>  55     </bean>  56     <!-- job的配置结束 -->  57   58     <!-- 工作的bean -->  59     <bean id="myJob" class="com.tec.kevin.quartz.jobTest" />  60   61 </beans>
登入後複製

 
#完成這裡的設定檔設定之後,就可以開始下一步,具體的業務邏輯實現了;

第四步驟具體業務邏輯實作。

這裡要注意的是下圖的兩點

 

##上圖是特定的業務實現的類,裡面的名字和下圖定時任務配置的要相同。

完成上述之後,我們可以啟動專案看看實際效果了。

這裡可以看到,計時任務依照我們之前在設定中的  0/10 * *  * * ?  每10秒執行一次來運行了。

              

# 注意的是,在實現此方法的過程中,我遇到了重複執行的情況。就是同一個時間,執行了兩次。後來找到的原因是在配置web.xml的時候,重複配置了定時任務,這樣導致執行了多次。要是有遇到這個狀況的,可以參考我的解決方法。

    接著下會有兩篇文章,一篇是寫出定時任務的更簡單的實作方法,另一篇講解cron 表達式。

 

以上是Spring+quartz的實作方式實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

模擬山羊3恐怖走廊任務怎麼做 模擬山羊3恐怖走廊任務怎麼做 Feb 25, 2024 pm 03:40 PM

恐怖走廊是模擬山羊3之中的一個任務,這個任務要怎麼樣才能夠去完成呢,掌握到詳細的過關方式和對應的流程,能夠完成這個任務的相應挑戰,下面就為大家帶來模擬山羊3恐怖走廊攻略,了解相關的資訊。模擬山羊3恐怖走廊攻略1、首先需要玩家前往地圖左上角的寂靜嶺處。 2.在這裡可以看到一個屋頂上寫著RESTSTOP的房子,玩家需要操作山羊進入這棟房子。 3.進入房間​​之後,我們先向前直走,然後向右轉,在這裡盡頭有一扇門,我們直接從這裡進去。 4.進入之後同樣是先向前走隨後右轉,在這裡走到門前門會關上,我們需要回頭找到

模擬山羊3帝陵任務怎麼過 模擬山羊3帝陵任務怎麼過 Mar 11, 2024 pm 01:10 PM

模擬山羊3是有著經典模擬玩法的遊戲,可讓玩家充分體驗到休閒動作類操作模擬的樂趣,遊戲中還擁有很多特色任務的精彩,其中模擬山羊3帝陵任務是需要玩家找尋到鐘塔上的三個鐘並操作的,有些玩家還不清楚要怎麼弄,下面帶來模擬山羊3帝陵任務攻略流程分享!模擬山羊3帝陵任務攻略流程按照順序敲擊鐘即可。詳細步驟拓展1、首先玩家需要打開地圖到霧丘公墓。 2.然後上到鐘樓上,裡面會有三個鐘。 3.接著按照從大到小的順序,依照222312312熟悉怒敲擊。 4、完成敲擊後即可完成任務,並打開大門以獲得光劍。

模擬山羊3營救史蒂夫任務怎麼做 模擬山羊3營救史蒂夫任務怎麼做 Feb 25, 2024 pm 03:34 PM

營救史蒂夫是模擬山羊3中的一個獨特任務,具體需要怎麼做才能夠完成呢,這個任務比較簡單,但是我們需要注意不要理解錯意思,下面就為大家帶來模擬山羊3營救史蒂夫任務攻略,能夠更好的完成相關的任務。模擬山羊3營救史蒂夫任務攻略1、先來到地圖中右下角的溫泉。 2.在來到溫泉邊之後就可以觸發營救史蒂夫的這個任務。 3.注意在溫泉裡有個男人,雖然他也叫史蒂夫,但是並不是這次任務的目標。 4.在這個溫泉裡找到一條叫史蒂夫的魚,並且將其帶上岸,即可完成這個任務。

編程新範式,當Spring Boot遇上OpenAI 編程新範式,當Spring Boot遇上OpenAI Feb 01, 2024 pm 09:18 PM

2023年,AI技術已成為熱門話題,對各行業產生了巨大影響,程式設計領域尤其如此。人們越來越認識到AI技術的重要性,Spring社群也不例外。隨著GenAI(GeneralArtificialIntelligence)技術的不斷進步,簡化具備AI功能的應用程式的創建變得至關重要和迫切。在這個背景下,"SpringAI"應運而生,旨在簡化開發AI功能應用程式的過程,使其變得簡單直觀,避免不必要的複雜性。透過"SpringAI",開發者可以更輕鬆地建立具備AI功能的應用程序,將其變得更加易於使用和操作

抖音粉絲團任務在哪裡看?抖音粉絲團會掉等級嗎? 抖音粉絲團任務在哪裡看?抖音粉絲團會掉等級嗎? Mar 07, 2024 pm 05:25 PM

抖音作為當下最受歡迎的社群媒體平台之一,吸引了大量用戶參與其中。在抖音上,有許多粉絲團任務可供用戶完成,以獲得一定的獎勵和福利。那麼,抖音粉絲團任務在哪裡可以找到呢?一、抖音粉絲團任務在哪裡看?為了找到抖音粉絲團任務,你需要造訪抖音的個人首頁。在主頁上,你會看到一個名為「粉絲團」的選項。點擊這個選項,你就可以瀏覽你所加入的粉絲團和相關任務。在粉絲團任務欄位中,你會看到各種不同類型的任務,例如按讚、留言、分享、轉發等。每個任務都有對應的獎勵和要求,一般來說,完成任務後會獲得一定數量的金幣或經驗值

利用Spring Boot以及Spring AI建構生成式人工智慧應用 利用Spring Boot以及Spring AI建構生成式人工智慧應用 Apr 28, 2024 am 11:46 AM

Spring+AI作為行業領導者,透過其強大、靈活的API和先進的功能,為各種行業提供了領先性的解決方案。在本專題中,我們將深入探討Spring+AI在各領域的應用範例,每個案例都將展示Spring+AI如何滿足特定需求,實現目標,並將這些LESSONSLEARNED擴展到更廣泛的應用。希望這個專題能對你有所啟發,更深入地理解和利用Spring+AI的無限可能。 Spring框架在軟體開發領域已經有超過20年的歷史,自SpringBoot1.0版本發布以來已有10年。現在,無人會質疑,Spring

spring編程式事務有哪些實作方式 spring編程式事務有哪些實作方式 Jan 08, 2024 am 10:23 AM

spring編程式事務的實作方式:1、使用TransactionTemplate;2、使用TransactionCallback和TransactionCallbackWithoutResult;3、使用Transactional註解;4、使用TransactionTemplate和@Transactional結合使用;5、自訂事務管理器。

教你如何設定Win11定時關機 教你如何設定Win11定時關機 Jan 06, 2024 pm 07:14 PM

有的時候,我們需要離開電腦一段時間讓它持續下載或允許某些程序,想要在運行結束後關機,那麼win11定時關機怎麼設置呢,其實使用關機命令就可以了。 win11定時關機怎麼設定:1、先右鍵左下角開始選單,開啟「運轉」2、接著在其中輸入「shutdown-s-t7200」並回車運轉。 (這裡的7200就是定時關機的時間,單位為秒,7200就是2小時後關機)3、這樣我們就能完成定時關機設定了。 4.如果想要取消定時關機,只要輸入「shutdown-a」並回車。 5.確認後就可以取消定時關機了。

See all articles