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

SpringBoot基于數(shù)據(jù)庫的定時(shí)任務(wù)統(tǒng)一管理的實(shí)現(xiàn)

 更新時(shí)間:2019年12月26日 11:58:17   作者:盲目的拾荒者  
這篇文章主要介紹了SpringBoot基于數(shù)據(jù)庫的定時(shí)任務(wù)統(tǒng)一管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

定時(shí)任務(wù)1

import lombok.extern.slf4j.Slf4j;

/**
 * @author Created by niugang on 2019/12/24/15:29
 */
@Slf4j
public class TaskTest {


  public void task1() {
    log.info("反射調(diào)用測試[一]類");
  }
}

定時(shí)任務(wù)2

import lombok.extern.slf4j.Slf4j;

/**
 * @author Created by niugang on 2019/12/24/15:54
 */
@Slf4j
public class TaskTest2 {
  public void task2() {
    log.info("反射調(diào)用測試[二]類");
  }
}

配置類

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.CronTask;
import org.springframework.scheduling.config.ScheduledTask;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;


/**
 * @author Created by niugang on 2019/12/24/15:19
 */
@Configuration
@EnableScheduling
@Slf4j
public class CompleteScheduleConfig implements SchedulingConfigurer {

  private static List<TaskRecord> taskRecordList = new ArrayList<>();


  /*
   *模擬數(shù)據(jù)庫存儲
   */
  static {
    TaskRecord taskRecord = new TaskRecord();
    taskRecord.setExecuteMehod("task1");
    taskRecord.setClassPath("com.example.demo.pojo.TaskTest");
    taskRecord.setCron("0/5 * * * * ?");
    taskRecordList.add(taskRecord);

    TaskRecord taskRecord2 = new TaskRecord();
    taskRecord2.setExecuteMehod("task2");
    taskRecord2.setClassPath("com.example.demo.pojo.TaskTest2");
    taskRecord2.setCron("0/10 * * * * ?");
    taskRecordList.add(taskRecord2);
  }


  @Override
  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    // taskRegistrar.addCronTask(() -> log.info("執(zhí)行定時(shí)任務(wù),{}", LocalDateTime.now()), "0/5 * * * * ?");
/*    taskRegistrar.addCronTask(new Runnable() {
      @Override
      public void run() {
        try {
          Class<?> aClass = Class.forName("com.example.demo.pojo.TaskTest");
          Object o = aClass.newInstance();
          Method[] declaredMethods = aClass.getDeclaredMethods();
          for (Method declaredMethod : declaredMethods) {
            declaredMethod.invoke(o);
            // log.info("方法名稱:{}",declaredMethod.getName());
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }, "0/5 * * * * ?");*/

    for (TaskRecord taskRecord : taskRecordList) {
      String classPath = taskRecord.getClassPath();
      String cron = taskRecord.getCron();
      String executeMehod = taskRecord.getExecuteMehod();
      Runnable runnable = () -> {
        Class<?> aClass;
        try {
          aClass = Class.forName(classPath);
          Object o = aClass.newInstance();
          Method[] declaredMethods = aClass.getDeclaredMethods();
          for (Method declaredMethod : declaredMethods) {
            if (declaredMethod.getName().equals(executeMehod)) {
              /// log.info("方法名稱:{}",declaredMethod.getName());
              declaredMethod.invoke(o);
            }
          }
        } catch (Exception e1) {
          e1.printStackTrace();
        }
      };
      CronTask cronTask = new CronTask(runnable, cron);
      ScheduledTask scheduledTask = taskRegistrar.scheduleCronTask(cronTask);
      //scheduledTask.cancel(); 取消定時(shí)任務(wù)

    }


  }


  @Data
  private static class TaskRecord {

    private String classPath;

    private String executeMehod;

    private String cron;

    //可以在增加一個type 執(zhí)行其他類型的定時(shí)任務(wù)
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • maven依賴jar包時(shí)版本沖突的解決方案

    maven依賴jar包時(shí)版本沖突的解決方案

    這篇文章介紹了處理jar包依賴沖突的幾種方法,包括:優(yōu)先原則、路徑近者優(yōu)先、排除原則、版本鎖定原則、查看間接依賴、排包和處理jar包依賴沖突的總結(jié)
    2025-01-01
  • SpringBoot實(shí)現(xiàn)AOP切面的三種方式

    SpringBoot實(shí)現(xiàn)AOP切面的三種方式

    Spring,SpringBoot框架憑借多種高效機(jī)制,顯著增強(qiáng)了代碼的功能性,并實(shí)現(xiàn)了切面編程(AOP)的精髓,其核心亮點(diǎn)之一,是運(yùn)用動態(tài)代理技術(shù),無需觸動源代碼即可在Bean的運(yùn)行時(shí)為其動態(tài)織入額外功能,本文給大家介紹了SpringBoot通過3種方式實(shí)現(xiàn)AOP切面,需要的朋友可以參考下
    2024-08-08
  • Docker?DockerFile部署java?jar項(xiàng)目包及Mysql和Redis的詳細(xì)過程

    Docker?DockerFile部署java?jar項(xiàng)目包及Mysql和Redis的詳細(xì)過程

    Dockerfile是一種用于構(gòu)建Docker鏡像的文件格式,可以通過Dockerfile部署Java項(xiàng)目,這篇文章主要給大家介紹了關(guān)于Docker?DockerFile部署java?jar項(xiàng)目包及Mysql和Redis的詳細(xì)過程,需要的朋友可以參考下
    2023-12-12
  • Java switch多值匹配操作詳解

    Java switch多值匹配操作詳解

    這篇文章主要介紹了Java switch多值匹配操作詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java文件操作之IO流 File類的使用詳解

    Java文件操作之IO流 File類的使用詳解

    在java中提供有對于文件操作系統(tǒng)的支持,這個支持在java.io.File類中進(jìn)行了定義,也就是說在整個java.io包中File類是唯一一個與文件本身操作有關(guān)的類(創(chuàng)建,刪除,重命名)有關(guān)的類,而如果想要進(jìn)行File類的操作,我們需要提供有完整的路徑支持,而后可以調(diào)用相應(yīng)的方法進(jìn)行處理
    2021-09-09
  • Mybatis如何使用正則模糊匹配多個數(shù)據(jù)

    Mybatis如何使用正則模糊匹配多個數(shù)據(jù)

    這篇文章主要介紹了Mybatis如何使用正則模糊匹配多個數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot解析指定Yaml配置文件的實(shí)現(xiàn)過程

    SpringBoot解析指定Yaml配置文件的實(shí)現(xiàn)過程

    這篇文章主要介紹了SpringBoot解析指定Yaml配置文件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(48)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(48)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Java?SpringBoot集成文件之如何使用POI導(dǎo)出Word文檔

    Java?SpringBoot集成文件之如何使用POI導(dǎo)出Word文檔

    這篇文章主要介紹了Java?SpringBoot集成文件之如何使用POI導(dǎo)出Word文檔,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 一篇文章看懂Java異常處理

    一篇文章看懂Java異常處理

    異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時(shí)候是可以避免的,這篇文章主要給大家介紹了關(guān)于Java異常處理的相關(guān)資料,需要的朋友可以參考下
    2021-11-11

最新評論

资溪县| 且末县| 云龙县| 古田县| 青神县| 玉林市| 资溪县| 桐乡市| 聊城市| 磐安县| 蚌埠市| 溧阳市| 元氏县| 临夏市| 西华县| 沧州市| 江津市| 古田县| 阿合奇县| 灵石县| 北川| 渑池县| 长阳| 德阳市| 阿拉善盟| 深水埗区| 新乡市| 肥乡县| 丽水市| 资源县| 湟源县| 获嘉县| 安塞县| 柘荣县| 定安县| 澜沧| 勃利县| 汶上县| 乌什县| 肇源县| 潍坊市|