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

SpringBoot整合任務(wù)系統(tǒng)quartz和SpringTask的方法

 更新時(shí)間:2022年10月24日 11:16:26   作者:踏風(fēng)彡  
這篇文章主要介紹了SpringBoot整合任務(wù)系統(tǒng)(quartz和SpringTask),Quartz是一個(gè)比較成熟了的定時(shí)任務(wù)框架,但是捏,它稍微的有些許繁瑣,本文先給大家講解下Quartz的一些基本概念結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下

SpringBoot整合任務(wù)系統(tǒng)

? 這里說的任務(wù)系統(tǒng)指的是定時(shí)任務(wù)。定時(shí)任務(wù)是企業(yè)級開發(fā)中必不可少的組成部分,諸如長周期業(yè)務(wù)數(shù)據(jù)的計(jì)算,例如年度報(bào)表,諸如系統(tǒng)臟數(shù)據(jù)的處理,再比如系統(tǒng)性能監(jiān)控報(bào)告,還有搶購類活動的商品上架,這些都離不開定時(shí)任務(wù)。下面將介紹兩種不同的定時(shí)任務(wù)技術(shù)。

1:Quartz

? Quartz是一個(gè)比較成熟了的定時(shí)任務(wù)框架,但是捏,它稍微的有些許繁瑣,因此,SpringBoot大哥說:我來給它整合整合。” 于是呢,SpringBoot大哥出手了,對其進(jìn)行整合,簡化了一系列配置,將很多配置都簡化為了默認(rèn)配置(包含常用的注解式開發(fā)??),這樣對Quartz的的整合就舒服了許多。

? 接下來,咱們先了解下Quartz的一些基本概念。

  • 工作(Job):用于定義具體執(zhí)行的工作(工作的邏輯和流程)
  • 工作明細(xì)(JobDetail):用于描述定時(shí)工作相關(guān)的信息()
  • 觸發(fā)器(Trigger):描述了工作明細(xì)與調(diào)度器的對應(yīng)關(guān)系
  • 調(diào)度器(Scheduler):用于描述觸發(fā)工作的執(zhí)行規(guī)則,通常使用cron表達(dá)式定義規(guī)則

? 這簡單來說就是咱們要提前定好什么時(shí)候干什么事情,這個(gè)就是工作;兒工作不可能只有一個(gè)工作名稱吧,肯定要有具體的工作內(nèi)容,這個(gè)就是工作明細(xì)(JobDetail)。這個(gè)時(shí)候工作內(nèi)容都明確了,現(xiàn)在需要明確的就是什么時(shí)候去執(zhí)行了,以及按照什么規(guī)則去執(zhí)行,這個(gè)時(shí)候需要調(diào)度器。那么這個(gè)時(shí)候,就有寶貝兒問了,觸發(fā)器呢?它當(dāng)然在啦,因?yàn)檎{(diào)度器和工作是兩個(gè)獨(dú)立的個(gè)體,所以需要一個(gè)東西去把他們聯(lián)系起來,這個(gè)東西就是觸發(fā)器。

? OK,現(xiàn)在開始,咱們來看SpringBoot來整合Quartz。

1.導(dǎo)入Quartz的Maven坐標(biāo)。

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

2,遵守Quartz的規(guī)范編寫相應(yīng)的工作內(nèi)容的bean,讓它交給第三步的JobDetail去綁定

//定義開發(fā)任務(wù)的bean,注意,這里要繼承QuartzJobBean,
//而不是將定義的開發(fā)任務(wù)的bean交給Spring去管理
public class MyQuartz extends QuartzJobBean {

    //這個(gè)方法里寫的邏輯是你需要執(zhí)行的操作,也就是任務(wù)內(nèi)容
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("踏風(fēng)彡");
    }
}

3.編寫Quartz的具體配置類,這個(gè)配置類要交給Spring去管理

類名稱和方法名稱可以自定義

//創(chuàng)建Quartz的具體配置類,包含任務(wù)綁定和觸發(fā)器
@Configuration
public class QuartzConfig {

    //.storeDurably():生命當(dāng)任務(wù)未執(zhí)行會被框架給持久化,不會直接結(jié)束
    //.newJob():綁定具體的任務(wù)類
    @Bean
    public JobDetail Print(){
           return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
    }


    //定義觸發(fā)器
//    forjob():綁定跟要執(zhí)行任務(wù)綁定的返回值為JObDetail的方法(即工作明細(xì)對象)
//    TriggerBuilder.newTrigger():創(chuàng)建觸發(fā)器對象
//    withSchedule(scheduleBuilder):使用調(diào)度器,規(guī)定任務(wù)的執(zhí)行策略
    @Bean
    public Trigger PrintJobTrigger(){
        //這里使用cron表達(dá)式:
        //"0/5 * * * * ?"
        //意思是:每五秒 任意分 任意小時(shí) 任意日 任意月 任意周幾
        ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
        return TriggerBuilder.newTrigger().forJob(Print()).withSchedule(scheduleBuilder).build();
    }
}

4.配置類里主要實(shí)現(xiàn)兩個(gè)方法,方法名可以自定義,方法返回值要限定

工作明細(xì)方法

//.storeDurably():生命當(dāng)任務(wù)未執(zhí)行會被框架給持久化,不會直接結(jié)束
//.newJob():綁定具體的任務(wù)類
@Bean
public JobDetail Print(){
       return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
}

觸發(fā)器方法

    //定義觸發(fā)器
//    forjob():綁定跟要執(zhí)行任務(wù)綁定的返回值為JObDetail的方法(即工作明細(xì)對象)
//    TriggerBuilder.newTrigger():創(chuàng)建觸發(fā)器對象
//    withSchedule(scheduleBuilder):使用調(diào)度器,規(guī)定任務(wù)的執(zhí)行策略
    @Bean
    public Trigger PrintJobTrigger(){
        //這里使用cron表達(dá)式:
        //"0/5 * * * * ?"
        //意思是:每五秒 任意分 任意小時(shí) 任意日 任意月 任意周幾
        ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
        return TriggerBuilder.newTrigger().forJob(Print()).withSchedule(scheduleBuilder).build();
    }

接下來,寶貝們,咱們來看一下執(zhí)行結(jié)果。

在這里插入圖片描述

? 工作明細(xì)中利用newJob()傳入具體的工作對象。

? 觸發(fā)器也需要綁定具體的任務(wù),通過forJob()綁定具體的工作明細(xì)對象,這里可以對工作明細(xì)對象設(shè)置具體名稱進(jìn)行綁定,或者直接對相應(yīng)的bean方法進(jìn)行綁定。觸發(fā)器中最核心的是執(zhí)行規(guī)則,其中最核心的是執(zhí)行時(shí)間,這里我用的是cron表達(dá)式,關(guān)于表達(dá)式我只對在這篇文章中所需的在代碼里進(jìn)行了介紹,如果朋友們想學(xué)習(xí)更詳細(xì)的cron表達(dá)式規(guī)則,可以自行找相應(yīng)的資料進(jìn)行學(xué)習(xí)呦~~。

總結(jié):

  • SpringBoot整合Quartz的核心說到底還是把相應(yīng)的bean容器對象交給Spring容器管理,包含兩個(gè)對象:JobDetail和Trigger對象。
  • JobDetail對象是工作信息,需要綁定一個(gè)繼承了QuartzJobBean類的子類對象。
  • JobDetail和Trigger由觸發(fā)器進(jìn)行關(guān)聯(lián),觸發(fā)器需要綁定相關(guān)的JobDetail,還要設(shè)置執(zhí)行周期調(diào)度器。

2:Task

? 接下來咱們來看Spring對定時(shí)任務(wù)進(jìn)行整合后的簡化開發(fā)的操作。

? 簡單來說就是,注解式開發(fā),你只需要把你要執(zhí)行的任務(wù)加上Spring要求的注解,并根據(jù)注解的格式去設(shè)置定時(shí)任務(wù)的執(zhí)行規(guī)則即可。

1.開啟定時(shí)任務(wù)的開關(guān),在啟動類上加入@EnableScheduling注解。

@SpringBootApplication
@EnableScheduling
public class YsjApplication {

    public static void main(String[] args) {
        SpringApplication.run(YsjApplication.class, args);
    }

}

2.創(chuàng)建相應(yīng)的定時(shí)任務(wù)類,并將其交給Spring管理

@Component
public class TestBean {

}

3.在定時(shí)任務(wù)類中的相應(yīng)的定時(shí)任務(wù)方法加上@Scheduled注解,相應(yīng)的執(zhí)行時(shí)間規(guī)則用cron表達(dá)式表示

@Component
public class TestBean {

    @Scheduled(cron = "0/20 * * * * ?")
    public void print(){
        System.out.println("踏風(fēng)彡");
    }
}

4.若需要對定時(shí)任務(wù)的相關(guān)配置進(jìn)行配置,可以在配置文件里進(jìn)行配置

spring:
  task:
    scheduling:
      pool:
        max-size: 2  #task線程池最大大小
        keep-alive: 100s
        allow-core-thread-timeout: true
      thread-name-prefix: Spring_task_  #調(diào)度線程名前綴,默認(rèn)為:scheduling_
     # shutdown:
       # await-termination: false  #線程池關(guān)閉時(shí)是否等待所有任務(wù)完成
       # await-termination-period: 20s #調(diào)度線程前關(guān)閉前的最大等待時(shí)間
      shutdown:
        await-termination-period: 100s
        await-termination: false

總結(jié):

一定要先開啟定時(shí)任務(wù)的開關(guān),在啟動類上加上@EnableScheduling注解這里的定時(shí)任務(wù)方法的容器所在的類要交給Spring去管理若需要調(diào)試,可以在相應(yīng)配置類中加上相應(yīng)的配置

rmination-period: 100s
await-termination: false

**總結(jié):** 1. 一定要先開啟定時(shí)任務(wù)的開關(guān),在啟動類上加上@EnableScheduling注解 2. 這里的定時(shí)任務(wù)方法的容器所在的類要交給Spring去管理 3. 若需要調(diào)試,可以在相應(yīng)配置類中加上相應(yīng)的配置

到此這篇關(guān)于SpringBoot整合任務(wù)系統(tǒng)(quartz和SpringTask)的文章就介紹到這了,更多相關(guān)SpringBoot整合任務(wù)系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中l(wèi)ambda(函數(shù)式編程)一行解決foreach循環(huán)問題

    java中l(wèi)ambda(函數(shù)式編程)一行解決foreach循環(huán)問題

    這篇文章主要介紹了java中l(wèi)ambda(函數(shù)式編程)一行解決foreach循環(huán)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于java實(shí)現(xiàn)簡單的圖片類別識別

    基于java實(shí)現(xiàn)簡單的圖片類別識別

    這篇文章主要為大家詳細(xì)介紹了如何基于java實(shí)現(xiàn)簡單的圖片類別識別功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • OGNL表達(dá)式基本語法與用法詳解

    OGNL表達(dá)式基本語法與用法詳解

    這篇文章主要介紹了OGNL表達(dá)式基本語法與用法詳解,具有一定參考價(jià)值。需要的朋友可以了解下。
    2017-09-09
  • java內(nèi)存模型jvm虛擬機(jī)簡要分析

    java內(nèi)存模型jvm虛擬機(jī)簡要分析

    Java 內(nèi)存模型的主要目的是定義程序中各種變量的訪問規(guī)則, 關(guān)注在虛擬機(jī)中把變量值存儲到內(nèi)存和從內(nèi)存中取出變量值這樣的底層細(xì)節(jié)
    2021-09-09
  • 詳解spring cloud分布式整合zipkin的鏈路跟蹤

    詳解spring cloud分布式整合zipkin的鏈路跟蹤

    這篇文章主要介紹了詳解spring cloud分布式整合zipkin的鏈路跟蹤,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java redis使用場景介紹

    Java redis使用場景介紹

    Redis是一個(gè)完全開源、遵守 BSD 協(xié)議、簡單的、高效的、分布式的、基于內(nèi)存的k-v數(shù)據(jù)庫,本篇文章帶你了解它的使用場景,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring中Bean注入源碼示例解析

    Spring中Bean注入源碼示例解析

    這篇文章主要為大家介紹了Spring中Bean注入源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 使用純java config來配置spring mvc方式

    使用純java config來配置spring mvc方式

    這篇文章主要介紹了使用純java config來配置spring mvc方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 深入理解Java線程池從設(shè)計(jì)思想到源碼解讀

    深入理解Java線程池從設(shè)計(jì)思想到源碼解讀

    這篇文章主要介紹了深入理解Java線程池從設(shè)計(jì)思想到源碼解讀,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Springboot整合Flowable6.x導(dǎo)出bpmn20的步驟詳解

    Springboot整合Flowable6.x導(dǎo)出bpmn20的步驟詳解

    這篇文章主要介紹了Springboot整合Flowable6.x導(dǎo)出bpmn20,Flowable流程引擎可用于部署B(yǎng)PMN 2.0流程定義,可以十分靈活地加入你的應(yīng)用/服務(wù)/構(gòu)架,本文給出兩種從flowable導(dǎo)出流程定義bpmn20.xml的方式,需要的朋友可以參考下
    2023-04-04

最新評論

日喀则市| 剑河县| 施秉县| 垦利县| 普洱| 高雄县| 江口县| 荣成市| 界首市| 江油市| 澳门| 宜黄县| 汶川县| 河源市| 汉中市| 毕节市| 苍山县| 北宁市| 湘乡市| 云和县| 桦川县| 崇文区| 和静县| 昂仁县| 苗栗市| 北流市| 天峻县| 涪陵区| 松桃| 泽库县| 益阳市| 安吉县| 吉隆县| 修文县| 博客| 黄冈市| 巴彦淖尔市| 丹巴县| 甘孜县| 册亨县| 淮滨县|