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

