1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      SpringBoot集成Quartz如何實現(xiàn)定時任務(wù)-創(chuàng)新互聯(lián)

      這篇文章主要為大家展示了SpringBoot集成Quartz如何實現(xiàn)定時任務(wù),內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

      10年積累的網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有薊州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

      1 需求

      在我的前后端分離的實驗室管理項目中,有一個功能是學(xué)生狀態(tài)統(tǒng)計。我的設(shè)計是按天統(tǒng)計每種狀態(tài)的比例。為了便于計算,在每天0點(diǎn),系統(tǒng)需要將學(xué)生的狀態(tài)重置,并插入一條數(shù)據(jù)作為一天的開始狀態(tài)。另外,考慮到學(xué)生的請假需求,請假的申請往往是提前做好,等系統(tǒng)時間走到實際請假時間的時候,系統(tǒng)要將學(xué)生的狀態(tài)修改為請假。

      顯然,這兩個子需求都可以通過定時任務(wù)實現(xiàn)。在網(wǎng)上略做搜索以后,我選擇了比較流行的定時任務(wù)框架Quartz。

      2 Quartz

      Quartz是一個定時任務(wù)框架,其他介紹網(wǎng)上也很詳盡。這里要介紹一下Quartz里的幾個非常核心的接口。

      2.1 Scheduler接口

      Scheduler翻譯成調(diào)度器,Quartz通過調(diào)度器來注冊、暫停、刪除Trigger和JobDetail。Scheduler還擁有一個SchedulerContext,顧名思義就是上下文,通過SchedulerContext我們可以獲取到觸發(fā)器和任務(wù)的一些信息。

      2.2 Trigger接口

      Trigger可以翻譯成觸發(fā)器,通過cron表達(dá)式或是SimpleScheduleBuilder等類,指定任務(wù)執(zhí)行的周期。系統(tǒng)時間走到觸發(fā)器指定的時間的時候,觸發(fā)器就會觸發(fā)任務(wù)的執(zhí)行。

      2.3 JobDetail接口

      Job接口是真正需要執(zhí)行的任務(wù)。JobDetail接口相當(dāng)于將Job接口包裝了一下,Trigger和Scheduler實際用到的都是JobDetail。

      3 SpringBoot官方文檔解讀

      SpringBoot官方寫了spring-boot-starter-quartz。使用過SpringBoot的同學(xué)都知道這是一個官方提供的啟動器,有了這個啟動器,集成的操作就會被大大簡化。

      現(xiàn)在我們來看一看SpingBoot2.2.6官方文檔,其中第4.20小節(jié)Quartz Scheduler就談到了Quartz,但很可惜一共只有兩頁不到的內(nèi)容,先來看看這么精華的文檔里能學(xué)到些什么。

      Spring Boot offers several conveniences for working with the Quartz scheduler, including the
      spring-boot-starter-quartz “Starter”. If Quartz is available, a Scheduler is auto-configured (through the SchedulerFactoryBean abstraction).
      Beans of the following types are automatically picked up and associated with the Scheduler:
      • JobDetail: defines a particular Job. JobDetail instances can be built with the JobBuilder API.
      • Calendar.
      • Trigger: defines when a particular job is triggered.

      翻譯一下:

      SpringBoot提供了一些便捷的方法來和Quartz協(xié)同工作,這些方法里面包括`spring-boot-starter-quartz`這個啟動器。如果Quartz可用,Scheduler會通過SchedulerFactoryBean這個工廠bean自動配置到SpringBoot里。
      JobDetail、Calendar、Trigger這些類型的bean會被自動采集并關(guān)聯(lián)到Scheduler上。

      Jobs can define setters to inject data map properties. Regular beans can also be injected in a similar manner.

      翻譯一下:

      Job可以定義setter(也就是set方法)來注入配置信息。也可以用同樣的方法注入普通的bean。

      下面是文檔里給的示例代碼,我直接完全照著寫,拿到的卻是null。不知道是不是我的使用方式有誤。后來仔細(xì)一想,文檔的意思應(yīng)該是在創(chuàng)建Job對象之后,調(diào)用set方法將依賴注入進(jìn)去。但后面我們是通過框架反射生成的Job對象,這樣做反而會搞得更加復(fù)雜。最后還是決定采用給Job類加@Component注解的方法。

      文檔的其他篇幅就介紹了一些配置,但是介紹得也不全面,看了幫助也并不是很大。詳細(xì)的配置可以參考w3school的Quartz配置。

      4 SpringBoot集成Quartz

      4.1 建表

      我選擇將定時任務(wù)的信息保存在數(shù)據(jù)庫中,優(yōu)點(diǎn)是顯而易見的,定時任務(wù)不會因為系統(tǒng)的崩潰而丟失。

      建表的sql語句在Quartz的github中可以找到,里面有針對每一種常用數(shù)據(jù)庫的sql語句,具體地址是:Quartz數(shù)據(jù)庫建表sql。

      SpringBoot集成Quartz如何實現(xiàn)定時任務(wù)

      建表以后,可以看到數(shù)據(jù)庫里多了11張表。我們完全不需要關(guān)心每張表的具體作用,在添加刪除任務(wù)、觸發(fā)器等的時候,Quartz框架會操作這些表。

      4.2 引入依賴

      pom.xml里添加依賴。

      
      
       org.springframework.boot
       spring-boot-starter-quartz
       2.2.6.RELEASE
      

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      網(wǎng)頁題目:SpringBoot集成Quartz如何實現(xiàn)定時任務(wù)-創(chuàng)新互聯(lián)
      鏈接地址:http://www.ef60e0e.cn/article/esjio.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        民权县| 麟游县| 团风县| 寻甸| 奎屯市| 禄丰县| 项城市| 厦门市| 万山特区| 大连市| 甘德县| 鄢陵县| 鄂温| 合山市| 霍山县| 南宫市| 通河县| 准格尔旗| 景谷| 万源市| 淅川县| 庆云县| 庆安县| 阿拉善盟| 舒兰市| 古交市| 咸宁市| 阿合奇县| 罗江县| 五大连池市| 奎屯市| 丹巴县| 资中县| 梧州市| 即墨市| 四川省| 淮南市| 阿拉善左旗| 拉萨市| 宁蒗| 祁连县|