springboot根據(jù)啟動文件關(guān)閉定時任務(wù)的解決方法
一、前言
項目里有3個配置文件:
//生產(chǎn)環(huán)境用 application-prod.yml //測試環(huán)境用 application-test.yml //本地啟動用 //為什么本地不用test?因為測試環(huán)境是linux系統(tǒng),本地是windows系統(tǒng),路徑不一致,本地有盤符,還是得區(qū)分開 application-dev.yml
現(xiàn)在想讓本地dev啟動時,不執(zhí)行定時任務(wù),防止定時任務(wù)誤啟動導(dǎo)致影響測試環(huán)境。
代碼也不想改動太多。
二、解決方法
找到了一種最小的改動方法。
1.如果是springboot項目啟動類里加了@EnableScheduling注解,那就先把這個注解拆出來,不要加,如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}2.單獨(dú)建一個定時任務(wù)配置java類,如下:
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@Profile("!dev") // 非 dev 環(huán)境啟用定時任務(wù)
@EnableScheduling
public class SchedulingConfig {
//這個配置類為空類即可,不需要內(nèi)容
}其中,@Configuration是標(biāo)志這個類是配置類,加了springboot啟動時,才會掃描到這個類;
@EnableScheduling注解標(biāo)志啟用定時任務(wù)功能,有了這個,其他類配置的定時任務(wù)@Scheduled(cron = "0 0/30 * * * ?")這種才會生效;
@Profile("!dev")表示,只有啟動配置文件不是dev,才會加載這個類,如果是dev就不加載。
只有加載了這個類,才有@EnableScheduling注解,才會開啟定時任務(wù)執(zhí)行;
如果不加載這個類,那就相當(dāng)于沒有@EnableScheduling注解,其他類配置的定時任務(wù)@Scheduled(cron = "0 0/30 * * * ?")不會生效,也就不會執(zhí)行。
3.當(dāng)application.yml里用這個啟動時:
spring:
profiles:
active: dev或者啟動java項目用參數(shù)-Dspring.profiles.active=dev時(這個優(yōu)先級高,會覆蓋application.yml的配置):
就說明啟動參數(shù)是dev,后續(xù)讀取application-dev.yml文件;
因為啟動參數(shù)是dev,所以根據(jù)@Profile("!dev") ,不加載java文件,沒有開啟定時任務(wù)注解,也就不會執(zhí)行定時任務(wù)了。
4.可以測試,如果開啟了定時任務(wù),控制臺就會有這個日志,搜索Scheduler(沒有開啟就沒有):
11:38:38.520 [main] INFO o.s.s.c.ThreadPoolTaskScheduler - [initialize,181] - Initializing ExecutorService 'taskScheduler'
到此這篇關(guān)于springboot根據(jù)啟動文件關(guān)閉定時任務(wù)的文章就介紹到這了,更多相關(guān)springboot啟動文件關(guān)閉定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot運(yùn)行時修改定時任務(wù)Cron表達(dá)式的實現(xiàn)方案
- Springboot使用Redis實現(xiàn)定時任務(wù)的三種方式
- SpringBoot最簡單的定時任務(wù)@Scheduler的使用及解讀
- SpringBoot項目使用@Scheduled注解實現(xiàn)定時任務(wù)的方法
- SpringBoot項目如何使用多線程執(zhí)行定時任務(wù)
- SpringBoot最新定時任務(wù)的7種實現(xiàn)方案
- SpringBoot3整合Quartz實現(xiàn)定時任務(wù)的示例
- SpringBoot整合quartz實現(xiàn)定時任務(wù)
- SpringBoot創(chuàng)建動態(tài)定時任務(wù)的幾種方式小結(jié)
相關(guān)文章
詳解快速排序算法中的區(qū)間劃分法及Java實現(xiàn)示例
這篇文章主要介紹了詳解快速排序算法中的區(qū)間劃分法及Java實現(xiàn)示例,文中分別介紹了快排時兩種區(qū)間劃分的思路,需要的朋友可以參考下2016-04-04
JDBC實現(xiàn)Mysql自動重連機(jī)制的方法詳解
最近在工作中發(fā)現(xiàn)了一個問題,通過查找相關(guān)的資料終于解決了,下面這篇文章主要給大家介紹了關(guān)于JDBC實現(xiàn)Mysql自動重連機(jī)制的相關(guān)資料,文中給出多種解決的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
關(guān)于jd-gui啟動報This?program?requires?Java?1.8+的錯誤問題及解決方法
最近,在Mac使用上JD-GUI啟動時總是報錯,接下來通過本文給大家介紹關(guān)于jd-gui啟動報this?program?requires?Java?1.8+的錯誤問題及解決方法,需要的朋友可以參考下2022-05-05
使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn)
這篇文章主要介紹了使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

