内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

SpringBoot集成Quartz如何實(shí)現(xiàn)定時(shí)任務(wù)-創(chuàng)新互聯(lián)

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

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

1 需求

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

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

2 Quartz

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

2.1 Scheduler接口

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

2.2 Trigger接口

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

2.3 JobDetail接口

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

3 SpringBoot官方文檔解讀

SpringBoot官方寫(xiě)了spring-boot-starter-quartz。使用過(guò)SpringBoot的同學(xué)都知道這是一個(gè)官方提供的啟動(dòng)器,有了這個(gè)啟動(dòng)器,集成的操作就會(huì)被大大簡(jiǎn)化。

現(xiàn)在我們來(lái)看一看SpingBoot2.2.6官方文檔,其中第4.20小節(jié)Quartz Scheduler就談到了Quartz,但很可惜一共只有兩頁(yè)不到的內(nèi)容,先來(lá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提供了一些便捷的方法來(lái)和Quartz協(xié)同工作,這些方法里面包括`spring-boot-starter-quartz`這個(gè)啟動(dòng)器。如果Quartz可用,Scheduler會(huì)通過(guò)SchedulerFactoryBean這個(gè)工廠bean自動(dòng)配置到SpringBoot里。
JobDetail、Calendar、Trigger這些類型的bean會(huì)被自動(dòng)采集并關(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方法)來(lái)注入配置信息。也可以用同樣的方法注入普通的bean。

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

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

4 SpringBoot集成Quartz

4.1 建表

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

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

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

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

4.2 引入依賴

pom.xml里添加依賴。

<!-- quartz 定時(shí)任務(wù) -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-quartz</artifactId>
 <version>2.2.6.RELEASE</version>
</dependency>

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

文章名稱:SpringBoot集成Quartz如何實(shí)現(xiàn)定時(shí)任務(wù)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.rwnh.cn/article0/esjio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、搜索引擎優(yōu)化品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)ChatGPT、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
梓潼县| 武冈市| 广宁县| 茶陵县| 临潭县| 上杭县| 汉中市| 南涧| 屯门区| 苗栗县| 安岳县| 汝城县| 北京市| 沁水县| 英吉沙县| 紫金县| 泸西县| 阆中市| 密云县| 讷河市| 天柱县| 永定县| 灵武市| 海原县| 建湖县| 神农架林区| 镇原县| 酒泉市| 临潭县| 陇川县| 双峰县| 三台县| 汾西县| 灌南县| 通州区| 湾仔区| 绥德县| 方山县| 虎林市| 六盘水市| 滦平县|