最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot日程管理Quartz與定時(shí)任務(wù)Task實(shí)現(xiàn)詳解

 更新時(shí)間:2022年09月27日 08:27:42   作者:搗蛋孩學(xué)編程  
定時(shí)任務(wù)是企業(yè)級(jí)開發(fā)中必不可少的組成部分,諸如長周期業(yè)務(wù)數(shù)據(jù)的計(jì)算,例如年度報(bào)表,諸如系統(tǒng)臟數(shù)據(jù)的處理,再比如系統(tǒng)性能監(jiān)控報(bào)告,還有搶購類活動(dòng)的商品上架,這些都離不開定時(shí)任務(wù)。本節(jié)將介紹兩種不同的定時(shí)任務(wù)技術(shù)

任務(wù)系統(tǒng)指的是定時(shí)任務(wù)。定時(shí)任務(wù)是企業(yè)級(jí)開發(fā)中必不可少的組成部分,諸如?周期業(yè)務(wù)數(shù)據(jù)的計(jì)算,都會(huì)?到定時(shí)任務(wù)

1 Quartz

Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域的?個(gè)開源項(xiàng)?,完全由Java開發(fā)的?個(gè)開源的任務(wù)?程管理系統(tǒng),在預(yù)先確定(被納??程)的時(shí)間到達(dá)時(shí),負(fù)責(zé)執(zhí)?(或者通知)其他軟件組件的系統(tǒng)。

核?概念

Job(任務(wù)):為?個(gè)接?,只定義?個(gè)?法 execute(JobExecutionContext context),在實(shí)現(xiàn)接?的execute?法中編寫所需要定時(shí)執(zhí)?的 Job(任務(wù)),JobExecutionContext類提供了調(diào)度應(yīng)?的?些信息。Job運(yùn)?時(shí)的信息保存在JobDataMap實(shí)例中。

JobDetail(任務(wù)信息):Quartz每次調(diào)度Job時(shí),都重新創(chuàng)建?個(gè)Job實(shí)例,它不直接接受?個(gè)Job的實(shí)例,相反它接收?個(gè)Job實(shí)現(xiàn)類(JobDetail,描述Job的實(shí)現(xiàn)類及其他相關(guān)的靜態(tài)信息,如Job名字、描述、關(guān)聯(lián)監(jiān)聽器等信息)。

Trigger(觸發(fā)器):為?個(gè)類,描述觸發(fā)Job執(zhí)?的時(shí)間觸發(fā)規(guī)則。主要有SimpleTrigger和CronTrigger兩個(gè)?類。當(dāng)且僅當(dāng)需調(diào)度?次或者以固定時(shí)間間隔周期執(zhí)?調(diào)度,SimpleTrigger是最適合的選擇;?CronTrigger則可以通過Cron表達(dá)式定義出各種復(fù)雜時(shí)間規(guī)則的調(diào)度?案。

Scheduler(調(diào)度器):調(diào)度器就相當(dāng)于?個(gè)容器,裝載著任務(wù)和觸發(fā)器。該類是?個(gè)接?,代表?個(gè)Quartz的獨(dú)?運(yùn)?容器,Trigger和JobDetail可以注冊到Scheduler中。

Springboot整合Quartz

1.導(dǎo)?springboot整合Quartz的starter

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

2.定義任務(wù)Bean

按照Quartz的開發(fā)規(guī)范制作,繼承QuartzJobBean

public class MyQuartz extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("quartz task is going......");
    }
}

3.創(chuàng)建Quartz配置類

定義?作明細(xì)(JobDetail)與觸發(fā)器的(Trigger)bean

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail testDetail(){
        return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
    }
    @Bean
    public Trigger testJobTrigger(){
        //創(chuàng)建調(diào)度器
        ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ? ");
        //綁定對應(yīng)的?作明細(xì)
        return TriggerBuilder.newTrigger().forJob(testDetail()).withSchedule(scheduleBuilder).build();
    }
}

cron表達(dá)式,定時(shí)執(zhí)?

  • 第?位,表示秒,取值 0-59;
  • 第?位,表示分,取值 0-59;
  • 第三位,表示?時(shí),取值 0-23;
  • 第四位,?期天/?,取值 1-31;
  • 第五位,?期?份,取值 1-12;
  • 第六位,星期,取值 1-7,星期?、星期?…;

注:不是第1周、第2周的意思,另外:1表示星期天,2表示星期?。

  • 第七位,年份,可以留空,取值 1970-2099。

特殊符號(hào)

  • (*)星號(hào):可以理解為每的意思,每秒、每分、每天、每?、每年
  • (?)問號(hào):問號(hào)只能出現(xiàn)在?期和星期這兩個(gè)位置,表示這個(gè)位置的值不確定,每天 3點(diǎn)執(zhí)?,所以第六位星期的位置是不需要關(guān)注的,就是不確定的值。同時(shí),?期和星期是兩個(gè)相互排斥的元素,通過問號(hào)來表明不指定值。假如 1 ? 10 ?是星期?,如果在星期的位置是另指定星期?,就前后沖突?盾了
  • (-)減號(hào):表達(dá)?個(gè)范圍,如在?時(shí)字段中使?“10-12”,則表示從 10~12 點(diǎn),即10、11、12
  • (,)逗號(hào):表達(dá)?個(gè)列表值,如在星期字段中使?“1、2、4”,則表示星期?、星期?、星期四
  • (/)斜杠:如 x/y,x 是開始值,y 是步?,假設(shè)在第?位(秒) 0/15 就是,從 0秒開始,每 15 秒,最后就是 0、15、30、45、60,另 */y,等同于 0/y

總結(jié)

1. springboot整合Quartz就是將Quartz對應(yīng)的核?對象交給spring容器管理,包含兩個(gè)對象,JobDetail和Trigger對象

2. JobDetail對象描述的是?作的執(zhí)?信息,需要綁定?個(gè)QuartzJobBean類型的對象

3. Trigger對象定義了?個(gè)觸發(fā)器,需要為其指定綁定的JobDetail是哪個(gè),同時(shí)要設(shè)置執(zhí)?周期調(diào)度器

2. Task

spring根據(jù)定時(shí)任務(wù)的特征,將定時(shí)任務(wù)的開發(fā)簡化到了極致。

1.開啟定時(shí)任務(wù)功能

在引導(dǎo)類上開啟定時(shí)任務(wù)功能的開關(guān),使?注解@EnableScheduling

@SpringBootApplication
@EnableScheduling//打開定時(shí)任務(wù)開關(guān)
public class Demo12SpringbootTaskApplication {
    public static void main(String[] args) {
        SpringApplication.run(Demo12SpringbootTaskApplication.class, args);
    }
}

2.定義Bean

在對應(yīng)要定時(shí)執(zhí)?的操作上?,使?注解@Scheduled定義執(zhí)?的時(shí)間,執(zhí)?時(shí)間的描述?式還是cron表達(dá)式

@Component
public class MyBean {
    @Scheduled(cron = "0/1 * * * * ?")
    public void print() {
        System.out.println(Thread.currentThread().getName() + ":spring task run...");
    }
}

3.配置文件

如何想對定時(shí)任務(wù)進(jìn)?相關(guān)配置,可以通過配置?件進(jìn)?

spring:
  task:
    scheduling:
      ## 調(diào)度線程名稱前綴 默認(rèn)scheduling-
      thread-name-prefix: myTask_
      pool:
        # 任務(wù)調(diào)度線程池?? 默認(rèn) 1
        size: 1
      shutdown:
        # 線程池關(guān)閉時(shí)等待所有任務(wù)完成
        await-termination: false
        # 調(diào)度線程關(guān)閉前最?等待時(shí)間,確保最后?定關(guān)閉
        await-termination-period: 10s

總結(jié)

1. spring task需要使?注解@EnableScheduling開啟定時(shí)任務(wù)功能

2. 為定時(shí)執(zhí)?的的任務(wù)設(shè)置執(zhí)?周期,描述?式cron表達(dá)式

到此這篇關(guān)于SpringBoot日程管理Quartz與定時(shí)任務(wù)Task實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)SpringBoot Quartz與Task內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Hibernate n+1問題

    淺談Hibernate n+1問題

    這篇文章主要介紹了淺談Hibernate n+1問題,怎么解決n+1問題,文中也作了簡要分析,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • java通過url讀取文件內(nèi)容示例

    java通過url讀取文件內(nèi)容示例

    這篇文章主要介紹了java通過url讀取文件內(nèi)容示例,大家參考使用吧
    2014-01-01
  • Springboot容器級(jí)后置處理器BeanDefinitionRegistryPostProcessor

    Springboot容器級(jí)后置處理器BeanDefinitionRegistryPostProcessor

    這篇文章主要介紹了Springboot容器級(jí)后置處理器BeanDefinitionRegistryPostProcessor,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • java單點(diǎn)登錄(SSO)的實(shí)現(xiàn)

    java單點(diǎn)登錄(SSO)的實(shí)現(xiàn)

    SSO是指在多個(gè)應(yīng)用系統(tǒng)中個(gè),用戶只需要登陸一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),本文主要介紹了java單點(diǎn)登錄的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-07-07
  • Java實(shí)現(xiàn)的n階曲線擬合功能示例

    Java實(shí)現(xiàn)的n階曲線擬合功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的n階曲線擬合功能,結(jié)合實(shí)例形式分析了Java基于矩陣的多項(xiàng)式曲線擬合相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 解決springboot導(dǎo)入失敗,yml未識(shí)別的問題

    解決springboot導(dǎo)入失敗,yml未識(shí)別的問題

    這篇文章主要介紹了解決springboot導(dǎo)入失敗,yml未識(shí)別的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring Cloud中Eureka開啟密碼認(rèn)證的實(shí)例

    Spring Cloud中Eureka開啟密碼認(rèn)證的實(shí)例

    這篇文章主要介紹了Spring Cloud中Eureka開啟密碼認(rèn)證的實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • springboot登陸過濾功能的實(shí)現(xiàn)代碼

    springboot登陸過濾功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了springboot登陸過濾功能的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • IDEA創(chuàng)建Java?Web項(xiàng)目的超詳細(xì)圖文教學(xué)

    IDEA創(chuàng)建Java?Web項(xiàng)目的超詳細(xì)圖文教學(xué)

    IDEA是程序員們常用的java集成開發(fā)環(huán)境,也是被公認(rèn)為最好用的java開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Java?Web項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • SpringFactoriesLoader類作用詳解

    SpringFactoriesLoader類作用詳解

    SpringFactoriesLoader可以加載jar包下META-INF下的spring.factories,把相關(guān)接口的實(shí)現(xiàn)按照key,value的形式加載到內(nèi)存,一個(gè)接口的多個(gè)實(shí)現(xiàn)可以按照","進(jìn)行分割
    2022-10-10

最新評論

承德市| 昌邑市| 通辽市| 湖北省| 丹东市| 民勤县| 鸡西市| 沙湾县| 开鲁县| 天镇县| 彭泽县| 东源县| 建德市| 邳州市| 罗源县| 玉山县| 新兴县| 康定县| 文山县| 云南省| 明星| 克什克腾旗| 清苑县| 崇明县| 乡宁县| 兴和县| 庆云县| 大庆市| 湘乡市| 浑源县| 浙江省| 烟台市| 合山市| 五大连池市| 虎林市| 宜昌市| 绥中县| 万源市| 辽阳县| 调兵山市| 余干县|