一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - spring boot task實(shí)現(xiàn)動態(tài)創(chuàng)建定時任務(wù)的方法

spring boot task實(shí)現(xiàn)動態(tài)創(chuàng)建定時任務(wù)的方法

2021-07-10 11:06centychen Java教程

這篇文章主要介紹了spring boot task實(shí)現(xiàn)動態(tài)創(chuàng)建定時任務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在spring boot項(xiàng)目中,通過@enablescheduling可啟用spring自帶的定時任務(wù)支持,在通過@scheduled注解定義定時任務(wù),但是通過注解只能編寫固定時間的定時任務(wù),無法動態(tài)調(diào)整定時間隔,可通過實(shí)現(xiàn)schedulingconfigurer接口實(shí)現(xiàn)動態(tài)定時任務(wù)注冊。

對比quartz的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):配置非常簡單
缺點(diǎn):

  • 不支持分布式部署
  • 不支持動態(tài)配置定時任務(wù)
  • 不支持持久化

其實(shí)這幾個缺點(diǎn)歸根結(jié)底都是因?yàn)椴恢С殖志没匀绻?xiàng)目需要持久化定時任務(wù),還是要選擇quartz比較好。

參考代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package org.cent.demo.scanner.schedule;
 
import lombok.allargsconstructor;
import lombok.data;
import lombok.extern.slf4j.slf4j;
import org.springframework.context.annotation.configuration;
import org.springframework.scheduling.trigger;
import org.springframework.scheduling.annotation.enablescheduling;
import org.springframework.scheduling.annotation.schedulingconfigurer;
import org.springframework.scheduling.config.scheduledtaskregistrar;
import org.springframework.scheduling.support.crontrigger;
 
import java.util.arrays;
import java.util.list;
 
/**
 * @author: cent
 * @email: [email protected]
 * @date: 2019/1/16.
 * @description:
 */
@configuration
@enablescheduling
@slf4j
public class dynamicschedule implements schedulingconfigurer {
 
 /**
 * 測試數(shù)據(jù),實(shí)際可從數(shù)據(jù)庫獲取
 */
 private list<task> tasks = arrays.aslist(
  new task(1, "任務(wù)1", "*/30 * * * * *"),
  new task(2, "任務(wù)2", "*/30 * * * * *"),
  new task(3, "任務(wù)3", "*/30 * * * * *"),
  new task(4, "任務(wù)4", "*/30 * * * * *"),
  new task(5, "任務(wù)5", "*/30 * * * * *"),
  new task(6, "任務(wù)6", "*/30 * * * * *"),
  new task(7, "任務(wù)7", "*/30 * * * * *"),
  new task(8, "任務(wù)8", "*/30 * * * * *"),
  new task(9, "任務(wù)9", "*/30 * * * * *"),
  new task(10, "任務(wù)10", "*/30 * * * * *")
 );
 
 @override
 public void configuretasks(scheduledtaskregistrar scheduledtaskregistrar) {
 tasks.foreach(task -> {
  //任務(wù)執(zhí)行線程
  runnable runnable = () -> log.info("execute task {}", task.getid());
 
  //任務(wù)觸發(fā)器
  trigger trigger = triggercontext -> {
  //獲取定時觸發(fā)器,這里可以每次從數(shù)據(jù)庫獲取最新記錄,更新觸發(fā)器,實(shí)現(xiàn)定時間隔的動態(tài)調(diào)整
  crontrigger crontrigger = new crontrigger(task.getcron());
  return crontrigger.nextexecutiontime(triggercontext);
  };
 
  //注冊任務(wù)
  scheduledtaskregistrar.addtriggertask(runnable, trigger);
 });
 
 }
 
 @data
 @allargsconstructor
 static class task {
 /**
  * 主鍵id
  */
 private int id;
 /**
  * 任務(wù)名稱
  */
 private string name;
 /**
  * cron表達(dá)式
  */
 private string cron;
 }
}

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

原文鏈接:https://www.jianshu.com/p/546631cc2b8f

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本高清中文字幕 | 金莲一级淫片aaaaaa | 日韩ab| 日韩精品视频观看 | 我和岳的性事小说 | 暖暖视频高清图片免费完整版 | 色综合色综合 | 日本生活中的玛丽 | 国产一级大片免费看 | 亚洲欧美日韩中文字幕久久 | 蜜桃影像传媒推广 | 亚洲26uuuu最新地址 | 日本中文字幕一区二区高清在线 | 猫咪社区免费资源在线观看 | 99在线观看国产 | 久久电影午夜 | 青青久久精品国产免费看 | 国语视频高清在线观看 | 九九精品视频在线免费观看 | 韩国女主播在线大尺无遮挡 | 亚洲美洲国产日产 | 美女脱得一二净无内裤全身的照片 | 99久热只有精品视频免费看 | 国产3p绿奴在线视频 | 午夜办公室在线观看高清电影 | 高清视频在线播放ww | 包臀裙女教师波多野结衣 | 国内精品久久久久久中文字幕 | 免费日批视频 | 久草青青在线 | 国产欧美一区二区三区免费看 | 精品国产一二三区在线影院 | 波多野结衣中文字幕乱七八糟 | 九九精品成人免费国产片 | 欧美人妖另类性hd | 182免费在线观看 | 91久久偷偷做嫩草影院电 | 国产女乱淫真高清免费视频 | 亚洲精品国产乱码AV在线观看 | 国产在视频线精品视频 | 91精品国产亚洲爽啪在线影院 |