激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - Spring實現動態修改時間參數并手動開啟關停操作

Spring實現動態修改時間參數并手動開啟關停操作

2021-01-03 15:21游魚遷徙 Java教程

spring實現定時任務的方式有三種,分別是java自帶的timer類、spring task和quartz三種。本文只介紹spring自帶的task和第三方quartz,感興趣的朋友參考下吧

spring實現定時任務的方式有三種,分別是java自帶的timer類、spring task和quartz三種。

  本文只介紹spring自帶的task和第三方quartz。spirng task可以將它比作一個輕量級的Quartz,使用起來非常簡單,除spring相關的包外不需要額外的包,而且支持注解和配置文件兩種。接著直接演示spring task注解實現方式。

  首先,創建任務類,如下:

?
1
2
3
4
5
6
7
8
9
10
11
@Component
public class MyScheduler {
  int i =0;
  public void run(){
    i++;
    // 任務邏輯 
    System.out.println("第"+(i)+"次開始執行操作... " +"時間:【"
    + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").format(new Date())
    + "】");
  }
}

  接著,在spring的配置文件中添加命名空間及描述:

?
1
2
3
4
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:task="http://www.springframework.org/schema/task"
 ......
 xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">

  最后,spring配置文件來一發:

?
1
2
3
<task:scheduled-tasks> 
    <task:scheduled ref="myScheduler" method="run" cron="0/5 * * * * ?"/> 
</task:scheduled-tasks>

  大功告成,可以用了,但是感覺很麻煩,也很死板,也就用來寫寫demo,那么就稍微改造一下吧。

?
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
@Service
@Lazy(false)
@EnableScheduling
public class MyScheduler extends BaseService implements SchedulingConfigurer{
  public static String cron = "0/2 * * * * ?";
  int i =0;
  @Override
  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    taskRegistrar.addTriggerTask(new Runnable() {
      @Override
      public void run() {
        i++;
        // 需要實現的任務邏輯 
        logger.info("第"+(i)+"次開始執行操作... " +"時間:【"
        + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").format(new Date())
        + "】");
      }
    }, new Trigger(){
      @Override
      public Date nextExecutionTime(TriggerContext triggerContext) {
        //任務觸發,可修改任務的執行周期 
        CronTrigger trigger = new CronTrigger(cron);
        Date nextExec = trigger.nextExecutionTime(triggerContext);
        return nextExec; 
      }
    });
  }
}

  實現SchedulingConfigurer接口的configureTasks方法,如果直接啟動項目,就可以實現每秒5次該方法的執行了,一旦cron參數被修改,ScheduledTaskRegistrar偵測到后會重新創建一個觸發器來實現新的cron表達式任務,這就解決了動態調度定時任務的問題了,而之前spring配置文件中關于任務類的內容也可以刪除了。另外,你可以修改spring task的任務池來增加可同時存在的任務數量,如下:

?
1
2
3
<task:executor id="executor" pool-size="10"/>
  <task:scheduler id="scheduler" pool-size="10"/>
<task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/>

  我們在web項目中有時候需要手動關停定時任務,或者需要立即執行定時任務具有的功能,這時的spring task就力不從心了,這也是它輕量級的原因,使用簡單,但提供的功能不夠強大,這時候就輪到Quartz出場了。Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的程序。Jobs可以做成標準的Java組件或 EJBs。

  各位有興趣可以去參考jeecg框架的定時任務開發,它對其進行了整合,使用起來及其方便。

Spring實現動態修改時間參數并手動開啟關停操作

  接著我們自己來整合Quartz,實現動態定時任務。先理清思路,1.導入jar包;2.配置spring文件;3.編寫任務代碼。

  首先導入需要的jar包,我這里使用spring 4.1.9版本及Quartz 2.2.7,對了,spring 3.1.x 以上才支持 Quartz 2.x 的jar包,原因就不細說了,各位自行百度。

總結

以上所述是小編給大家介紹的Spring實現動態修改時間參數并手動開啟關停操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/huyufan/archive/2017/09/14/Spring_Quartz.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一区二区三区欧洲 | 日本aaa一级片 | 成人一区二区三区四区 | 黄色网址在线免费 | 日本高清视频网站www | 毛片免费看电影 | 亚洲成人精品在线 | 国外成人在线视频 | 爱福利视频网 | 极品一级片 | 性爱视频在线免费 | 在线观看一区二区三区四区 | 免费人成在线观看网站 | 欧美日韩在线看片 | 羞羞的视频| 操皮视频 | 深夜激情视频 | 视频在线色 | 一区二区三区日韩在线 | 久久久www成人免费精品 | 国产亚洲精品久久久久久久软件 | 欧美亚洲另类在线 | 精品国产91久久久久久久妲己 | 亚洲电影免费观看国语版 | 国产91丝袜在线播放 | 黄色成人在线 | 在线观看国产一区二区 | 日本在线不卡一区二区 | 色99久久 | 成年性羞羞视频免费观看无限 | 射逼网站 | 亚洲成人中文字幕在线 | 蜜桃欧美性大片免费视频 | 国产精品久久久久久久四虎电影 | 97久久精品一区二区三区观看 | 99成人精品视频 | 欧美黄一区| 92看片淫黄大片欧美看国产片 | 黄视频网站免费在线观看 | 国产喷白浆10p | 久久思思爱 |