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

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

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

服務(wù)器之家 - 編程語言 - Java教程 - Spring Boot集成Quartz注入Spring管理的類的方法

Spring Boot集成Quartz注入Spring管理的類的方法

2021-04-23 11:26滄海一滴 Java教程

本篇文章主要介紹了Spring Boot集成Quartz注入Spring管理的類的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在spring boot中使用quartz時,在job中一般需要引用spring管理的bean,通過定義job factory實現(xiàn)自動注入。

spring有自己的schedule定時任務(wù),在spring boot中使用的時候,不能動態(tài)管理job,于是就使用quartz來實現(xiàn)。

在spring boot中配置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
import java.io.ioexception;
import java.util.properties;
 
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.beans.factory.config.propertiesfactorybean;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.core.io.classpathresource;
import org.springframework.scheduling.annotation.enablescheduling;
import org.springframework.scheduling.quartz.schedulerfactorybean;
 
@configuration
@enablescheduling
public class quartzschedule {
 
  @autowired
  private myjobfactory myjobfactory;
 
  @bean
  public schedulerfactorybean schedulerfactorybean() throws ioexception {
    schedulerfactorybean factory = new schedulerfactorybean();
 
    factory.setoverwriteexistingjobs(true);
 
    // 延時啟動
    factory.setstartupdelay(20);
 
    // 加載quartz數(shù)據(jù)源配置
    factory.setquartzproperties(quartzproperties());
 
    // 自定義job factory,用于spring注入
    factory.setjobfactory(myjobfactory);
 
    return factory;
  }
 
  /**
   * 加載quartz數(shù)據(jù)源配置
   *
   * @return
   * @throws ioexception
   */
  @bean
  public properties quartzproperties() throws ioexception {
    propertiesfactorybean propertiesfactorybean = new propertiesfactorybean();
    propertiesfactorybean.setlocation(new classpathresource("/quartz.properties"));
    propertiesfactorybean.afterpropertiesset();
    return propertiesfactorybean.getobject();
  }
 
}

為了在job中使用spring管理的bean,需要重新定義一個job factory:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@component
public class myjobfactory extends adaptablejobfactory {
  
  @autowired
  private autowirecapablebeanfactory capablebeanfactory;
 
  @override
  protected object createjobinstance(triggerfiredbundle bundle) throws exception {
    // 調(diào)用父類的方法
    object jobinstance = super.createjobinstance(bundle);
    // 進行注入
    capablebeanfactory.autowirebean(jobinstance);
    return jobinstance;
  }
}

然后在job中就可以使用spring管理的bean了

?
1
2
3
4
5
6
7
8
9
10
11
12
public class myjob implements job, serializable {
  private static final long serialversionuid = 1l;
  private logger logger = loggerfactory.getlogger(this.getclass());
 
  @autowired
  private someservice someservice;
 
  @override
  public void execute(jobexecutioncontext context) throws jobexecutionexception {
    someservice.dosomething();
  }
}

下面代碼是創(chuàng)建job:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
jobdetail jobdetail = jobbuilder.newjob(((job) class.forname(job.getclazz()).newinstance()).getclass())
    .withidentity(job.getjobname(), job.getjobgroup()).build();
jobdetail.getjobdatamap().put("extdata", job.getextdata());
 
// 表達式調(diào)度構(gòu)建器
cronschedulebuilder schedulebuilder = cronschedulebuilder.cronschedule(job.getcronexpression())
    .withmisfirehandlinginstructiondonothing();
// 構(gòu)建一個trigger
triggerbuilder<crontrigger> triggerbuilder = triggerbuilder.newtrigger().withidentity(triggerkey)
    .withschedule(schedulebuilder);
if (job.getstarttime() != null) {
  triggerbuilder.startat(job.getstarttime());
}
if (job.getendtime() != null) {
  triggerbuilder.endat(job.getendtime());
}
crontrigger trigger = triggerbuilder.build();
 
scheduler.schedulejob(jobdetail, trigger);// 注入到管理類

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

原文鏈接:https://www.cnblogs.com/softidea/p/6073495.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品一区二区三区网站 | 51国产偷自视频区视频小蝌蚪 | 国产精品99久久99久久久二 | 狠狠干最新网址 | 中文字幕一区二区三区四区 | 黄色高清视频网站 | 成人在线视频精品 | 一区二区三区四区高清视频 | 韩国十九禁高潮床戏在线观看 | 国产精品视频成人 | 一区二区三区日本在线观看 | 国产九九九九 | 伊人av影院| 国产一区二区视频观看 | 久久96国产精品久久秘臀 | 国产在线看一区 | 国产精品久久久久久模特 | 红杏网站永久免费视频入口 | 日韩视频区 | 欧美成人做爰高潮片免费视频 | 国产毛片视频 | 欧美日韩免费在线观看视频 | 免费黄色短视频网站 | 成人激情综合网 | 在线成人免费网站 | 黄色免费影片 | 777午夜精品视频在线播放 | 叶子楣成人爽a毛片免费啪啪 | 日本aaaa片毛片免费观蜜桃 | 深夜小视频在线观看 | avav在线播放 | 国产羞羞视频免费在线观看 | 久久久综合视频 | 香蕉视频网站在线观看 | 国产在线精品一区二区三区不卡 | 精品免费在线视频 | 国产女王女m视频vk 毛片免费在线视频 | 国产精品视频一区二区三区综合 | 亚洲网站一区 | 亚洲草逼视频 | 毛片视频免费观看 |