欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

1:Quartz

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

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

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

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

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

1.導入Quartz的Maven坐標。

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

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

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

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

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

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

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

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


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

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

工作明細方法

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

觸發(fā)器方法

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

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

在這里插入圖片描述

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

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

總結:

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

2:Task

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

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

1.開啟定時任務的開關,在啟動類上加入@EnableScheduling注解。

@SpringBootApplication
@EnableScheduling
public class YsjApplication {

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

}

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

@Component
public class TestBean {

}

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

@Component
public class TestBean {

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

4.若需要對定時任務的相關配置進行配置,可以在配置文件里進行配置

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

總結:

一定要先開啟定時任務的開關,在啟動類上加上@EnableScheduling注解這里的定時任務方法的容器所在的類要交給Spring去管理若需要調試,可以在相應配置類中加上相應的配置

rmination-period: 100s
await-termination: false

**總結:** 1. 一定要先開啟定時任務的開關,在啟動類上加上@EnableScheduling注解 2. 這里的定時任務方法的容器所在的類要交給Spring去管理 3. 若需要調試,可以在相應配置類中加上相應的配置

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

相關文章

  • Java版微信公眾號支付開發(fā)全過程

    Java版微信公眾號支付開發(fā)全過程

    這篇文章主要介紹了Java版微信公眾號支付開發(fā)全過程,本文通過實例相結合給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • SpringBoot中各個層級結構的具體實現(xiàn)

    SpringBoot中各個層級結構的具體實現(xiàn)

    在SpringBoot項目中,常常會把代碼文件放入不同的包中,本文主要介紹了SpringBoot中各個層級結構的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • mybatis-plus如何禁用一級緩存的方法

    mybatis-plus如何禁用一級緩存的方法

    這篇文章主要介紹了mybatis-plus如何禁用一級緩存的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 深入理解java中的重載和覆蓋

    深入理解java中的重載和覆蓋

    下面小編就為大家?guī)硪黄钊肜斫鈐ava中的重載和覆蓋。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java設計圖形與多媒體處理

    Java設計圖形與多媒體處理

    本文主要介紹了Java的圖形設計以及多媒體處理,源碼也做了詳細的注釋,對于初學者應該不難。詳細請看下文
    2015-09-09
  • JavaWeb購物車項目開發(fā)實戰(zhàn)指南

    JavaWeb購物車項目開發(fā)實戰(zhàn)指南

    之前沒有接觸過購物車的東東,也不知道購物車應該怎么做,所以在查詢了很多資料,總結一下購物車的功能實現(xiàn),下面這篇文章主要給大家介紹了關于JavaWeb購物車項目開發(fā)的相關資料,需要的朋友可以參考下
    2022-06-06
  • spring boot 配置動態(tài)刷新實現(xiàn)詳解

    spring boot 配置動態(tài)刷新實現(xiàn)詳解

    這篇文章主要介紹了spring boot 配置動態(tài)刷新實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 設置tomcat啟用gzip壓縮的具體操作方法

    設置tomcat啟用gzip壓縮的具體操作方法

    如果發(fā)現(xiàn)內容沒有被壓縮,可以考慮調整compressionMinSize大小,如果請求資源小于這個數(shù)值,則不會啟用壓縮
    2013-08-08
  • JavaBean實體類處理外鍵過程解析

    JavaBean實體類處理外鍵過程解析

    這篇文章主要介紹了JavaBean實體類處理外鍵過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 關于Dubbo初始問題

    關于Dubbo初始問題

    這篇文章主要介紹了關于Dubbo初始問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論