停用Spring Boot的@EnableScheduling
的方式如下。
停用@EnableScheduling
的簡單方式就是註解掉,但若設定好的@EnableScheduling
排程工作要在某些情況不執行(例如單元測試),在正式環境運行時要執行,可利用@ConditionalOnProperty
讀取properties檔的設定來決定是否套用@EnableScheduling
來啟用排程。
在設定檔application.properties
新增一自訂參數scheduling.enabled
,此參數的值可為true
或false
,為下面@ConditionalOnProperty
讀取的value
屬性值。
application.properties
#Scheduling
scheduling.enabled=true
在配置類SchedulingConfig
的@EnableScheduling
前加上@ConditionalOnProperty
設定如下。
SchedulingConfig
package com.abc.demo.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@ConditionalOnProperty(
value = "scheduling.enabled", // 讀取application.properties的scheduling.enabled的值
havingValue = "true", // scheduling.enabled為true則套用下面的annotation即@EnableScheduling的效果,反之@EnableScheduling會無效果
matchIfMissing = false // default, 若scheduling.enabled沒設定則預設為false
)
@EnableScheduling // 依上面@ConditionalOnProperty的條件決定是否套用
@Configuration
public class SchedulingConfig {
}
則當scheduling.enabled=false
時@ConditionalOnProperty
不成立,因此@EnableScheduling
不會被套用,排程不執行。
參考github。
沒有留言:
張貼留言