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

springboot Quartz動態(tài)修改cron表達式的方法

 更新時間:2018年09月29日 10:21:21   作者:追風的獨角鯨  
這篇文章主要介紹了springboot Quartz動態(tài)修改cron表達式的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、概述: 在開發(fā)中有的時候需要去手動禁止和啟用定時任務,修改定時任務的cron表達式然后再讓其動態(tài)生效,之前有過SSM的類似的業(yè)務的開發(fā)但是忘記寫下來了。。。只好重新溫習了一次,加上最近比較流行springBoot所以升級了一下用springBoot來完成.

2、關聯(lián)技術 SpringBoot、Quartz、H2、thymeleaf (好像就這么多)

3、具體流程      

1)首先去手動創(chuàng)建一個調度器工廠對象-SchedulerFactoryBean;其實應該不用手動創(chuàng)建的但是為了顧及到業(yè)務的復雜性所以還是創(chuàng)建一個好用。

 @Bean
  public SchedulerFactoryBean schedulerFactory(){
    SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
    /*用于Quartz集群,啟動時更新已存在的Job*/
    factoryBean.setOverwriteExistingJobs(true);
    /*定時任務開始啟動后延遲5秒開始*/
    factoryBean.setStartupDelay(5);
    return factoryBean;
  }

2)獲取到

//得到調度器
Scheduler scheduler = schedulerFactoryBean.getScheduler();

3)判斷是否有觸發(fā)器-trigger存在其中,因為有可能說上次的觸發(fā)器 并沒有刪除

//獲得觸發(fā)器
TriggerKey triggerKey = TriggerKey.triggerKey(config.getName(), config.getGroup());
CronTrigger trigger = (CronTrigger)scheduler.getTrigger(triggerKey);

4)創(chuàng)建一個任務類需要繼承Job,實現(xiàn)方法execute。需要在其中執(zhí)行定時任務如下:

//注釋作用,當上一個任務未結束時下一個任務需進行等待
@DisallowConcurrentExecution
public class QuartzJobFactory implements Job {
  public static final  String SCHEDULEJOBKEY="scheduleJob";
  //execute會根據(jù)cron的規(guī)則進行執(zhí)行
  @Override
  public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {   
        Config config = (Config) jobExecutionContext.getMergedJobDataMap().get(SCHEDULEJOBKEY);
        TaskUtils.invokMethod(config);
    }
}

5)將執(zhí)行實例添加到任務當中去,我在例子是將執(zhí)行任務的信息封裝到了對象config當中然后在任務QuartzJobFactoryz中進行解讀的

public static void invokMethod(Config config){
    Object obj=null;
    Class clazz=null;
    //通過Spring上下文去找 也有可能找不到
   try {
      obj= SpringUtils.getBean(config.getClassPath().split("\\.")[config.getClassPath().split("\\.").length - 1]);
   if (obj == null){
        clazz = Class.forName(config.getClassPath());
        obj = clazz.newInstance();
      }else{
       clazz =obj.getClass();
      }
    }catch (Exception e){
 throw new RuntimeException("ERROR:TaskUtils is Bean Create please check the classpath is`t right or not");
    }
 Method method=null;
    //獲得方法名
    try {
      method = clazz.getDeclaredMethod(config.getMethodName());
   } catch (NoSuchMethodException e) {   
   throw new RuntimeException("ERROR:TaskUtils is Bean the method Create please check the methodName is`t right or not");  
   }   
   //方法執(zhí)行

    try {
      method.invoke(obj);
    } catch (Exception e) {
   throw new RuntimeException("ERROR:TaskUtils is Bean the method execute please check the methodName is`t right or not");
    }
  }

6)創(chuàng)建觸發(fā)器并且綁定cron表達式

7)在調度器中將觸發(fā)器和任務進行組合 詳情見:com.study.www.service.QuartzTableservice.addJob

  //將cron表達式進行轉換    
  CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(config.getCron());   
  //創(chuàng)建觸發(fā)器并將cron表達式對象給塞入
  trigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
  //在調度器中將觸發(fā)器和任務進行組合
  scheduler.scheduleJob(jobDetail,trigger);

github:點擊打開鏈接

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JAVA重復調用接口導致數(shù)據(jù)不一致的問題解決

    JAVA重復調用接口導致數(shù)據(jù)不一致的問題解決

    在使用JAVA進行開發(fā)時,我們經(jīng)常會遇到要調用接口來獲取數(shù)據(jù)的情況,本文主要介紹了JAVA重復調用接口導致數(shù)據(jù)不一致的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 使用JAVA實現(xiàn)高并發(fā)無鎖數(shù)據(jù)庫操作步驟分享

    使用JAVA實現(xiàn)高并發(fā)無鎖數(shù)據(jù)庫操作步驟分享

    一個在線2k的游戲,每秒鐘并發(fā)都嚇死人。傳統(tǒng)的hibernate直接插庫基本上是不可行的。我就一步步推導出一個無鎖的數(shù)據(jù)庫操作,詳情看下文
    2013-11-11
  • IDEA main主函數(shù)如何添加args變量

    IDEA main主函數(shù)如何添加args變量

    這篇文章主要介紹了IDEA main主函數(shù)如何添加args變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • springboot jpa分庫分表項目實現(xiàn)過程詳解

    springboot jpa分庫分表項目實現(xiàn)過程詳解

    這篇文章主要介紹了springboot jpa分庫分表項目實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 詳解Spring?延遲初始化遇到的問題

    詳解Spring?延遲初始化遇到的問題

    這篇文章主要介紹了我們在使用Spring延遲初始化容易遇到的問題,文中有詳細的代碼示例,具有一定的參考價值,需要的可以借鑒一下
    2023-05-05
  • Hibernate中使用HQLQuery查詢全部數(shù)據(jù)和部分數(shù)據(jù)的方法實例

    Hibernate中使用HQLQuery查詢全部數(shù)據(jù)和部分數(shù)據(jù)的方法實例

    今天小編就為大家分享一篇關于Hibernate中使用HQLQuery查詢全部數(shù)據(jù)和部分數(shù)據(jù)的方法實例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 淺談Java并發(fā)之同步器設計

    淺談Java并發(fā)之同步器設計

    這篇文章主要介紹Java并發(fā)之同步器設計,本文以記錄方式并發(fā)編程中同步器設計的一些共性特征。并簡單介紹了Java中的AQS,需要的朋友可以參考一下文章的詳細內容
    2021-10-10
  • 關于Map的遍歷以及轉JsonArray存儲方式

    關于Map的遍歷以及轉JsonArray存儲方式

    在Java開發(fā)過程中,經(jīng)常會遇到需要對復雜數(shù)據(jù)結構進行處理的情況,本案例以List<Map<String,Object>>為例,介紹了如何遍歷該數(shù)據(jù)結構,并根據(jù)特定條件篩選出符合要求的元素,通過自定義一個Edit類來模擬形成一個新的Map對象,實現(xiàn)了數(shù)據(jù)的有序存儲
    2024-11-11
  • Java實現(xiàn)將TXT文本文件轉換為PDF文件

    Java實現(xiàn)將TXT文本文件轉換為PDF文件

    與TXT文本文件,PDF文件更加專業(yè)也更適合傳輸,所以這篇文章小編主要為大家詳細介紹了如何使用Java實現(xiàn)將TXT文本文件轉換為PDF文件 ,需要的可以參考下
    2024-02-02
  • Java基礎之Maven詳解

    Java基礎之Maven詳解

    這篇文章主要介紹了Java基礎之Maven詳解,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論

莱阳市| 南岸区| 吴堡县| 巩义市| 大丰市| 安图县| 吴堡县| 广汉市| 叙永县| 南陵县| 深泽县| 广汉市| 海南省| 长沙县| 密山市| 辽源市| 武汉市| 阳西县| 新竹市| 团风县| 云龙县| 桃江县| 娄烦县| 泗水县| 玛纳斯县| 随州市| 安顺市| 昌黎县| 江西省| 苍山县| 屯昌县| 顺平县| 安阳市| 普兰县| 康保县| 沈阳市| 怀来县| 桦川县| 瑞金市| 扶绥县| 浦北县|