@Scheduled 如何讀取動(dòng)態(tài)配置文件
@Scheduled讀取動(dòng)態(tài)配置文件
application.yml配置文件得配置信息
agreeAccTask: # # 每3分鐘執(zhí)行一次,handTime: 0 0/3 * * * ? 每天晚上2點(diǎn) handTime: 0 0 2 * * ? # 指定幾天內(nèi): day 1 表示當(dāng)前天內(nèi),2表示二天內(nèi),依次類推 # 指定生成目錄路勁: dir F:/agreeacc time: 0 0 2 * * ? day: 1 dir: F:/agreeacc3
java后端
* @Description:支付寶代扣對(duì)賬文件定時(shí)生成
*/
@Slf4j
@Component
@EnableScheduling
public class AgreeAccTask {
@Autowired
private AgreeAccMapper agreeAccMapper;
@Value("${agreeAccTask.day}")
private String day;
@Value("${agreeAccTask.dir}")
private String dir;
@Scheduled(cron="${agreeAccTask.time}")
public void AgreeAccTask(){
String today=DateUtil.date2String(new Date(),DateUtil.PATTERN_DATE);
log.info("【生成代扣對(duì)賬文件開始】日期:"+today);
int j=Integer.parseInt(day);
SpringBoot @Scheduled 讀取配置文件獲取cron值
1、在類上加注解@Component,交給Spring管理
2、在@PropertySource指定配置文件名稱,如下配置,指定放在src/main/resource目錄下的application.properties文件
3、配置文件application.properties參考內(nèi)容如下
#每秒鐘執(zhí)行一次 cron=0/1 * * * * *
import org.springframework.context.annotation.PropertySource;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:/application.properties")
public class ScoreTask1 {
@Scheduled(cron="${cron}")
public void scoreTask(){
System.out.println("從配置文件讀取cron表達(dá)式定時(shí)器");
}
}
進(jìn)一步衍生,可以把開發(fā)環(huán)境跟生產(chǎn)環(huán)境cron表達(dá)式做環(huán)境隔離,這樣每次打包部署,系統(tǒng)自動(dòng)執(zhí)行配置文件cron表達(dá)式,減少手動(dòng)修改代碼次數(shù)。
這里推薦一個(gè)在線生成cron表達(dá)式的工具 在線Cron表達(dá)式生成器
https://cron.qqe2.com/
注意cron表達(dá)式只能配置6位參數(shù),即 秒分時(shí) 日月周,有時(shí)候生成器會(huì)生成7位參數(shù),這樣在java代碼執(zhí)行會(huì)報(bào)錯(cuò)的
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android?Studio中創(chuàng)建java工程的完整步驟
Android?Studio創(chuàng)建java工程是非常麻煩的,因?yàn)锳ndroid?Studio沒(méi)有提供直接創(chuàng)建java工程的方法,下面這篇文章主要給大家介紹了關(guān)于Android?Studio中創(chuàng)建java工程的完整步驟,需要的朋友可以參考下2024-01-01
JAVA面試題String產(chǎn)生了幾個(gè)對(duì)象
這篇文章主要介紹了JAVA面試題 String s = new String("xyz");產(chǎn)生了幾個(gè)對(duì)象?,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Java語(yǔ)言中&&與& ||與|的區(qū)別是什么
這篇文章主要介紹了Java語(yǔ)言中&&與& ||與|的區(qū)別是什么的相關(guān)資料,需要的朋友可以參考下2017-04-04
java 中sendredirect()和forward()方法的區(qū)別
這篇文章主要介紹了java 中sendredirect()和forward()方法的區(qū)別,需要的朋友可以參考下2017-08-08
java中的export方法實(shí)現(xiàn)導(dǎo)出excel文件
這篇文章主要介紹了java中的export方法實(shí)現(xiàn)導(dǎo)出excel文件,文章圍繞java導(dǎo)出excel文件的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-03-03
java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤解決
這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-03-03
Java GZip 基于磁盤實(shí)現(xiàn)壓縮和解壓的方法
這篇文章主要介紹了Java GZip 基于磁盤實(shí)現(xiàn)壓縮和解壓,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考需要的朋友可以參考下2020-08-08

