问题描述
我需要使用@Scheduled批注在Spring Boot应用程序中使用cron样式的模式安排作业。
在将cron模式存储在配置属性文件中之前,我已经使用过cron作业。但是在这种情况下,当数据库中维护的标志变为true时,我想禁用cron作业。这样的事情我想实现。
或者在达到所需状态时,还有其他方法可以禁用数据库轮询吗?
@Service
@ConditionalOnProperty("yourConditionDBPropery")
public class SchedulingService {
//Run this task when flag in DB is set to true
@Scheduled
public void task1() {...}
@Scheduled
public void task2() {...}
}
解决方法
根据Baeldung的说法,conditional property来自配置,而不是数据库。
我建议这样:
@Service
@ConditionalOnProperty("yourConditionDBPropery")
public class SchedulingService {
//Run this task when flag in DB is set to true
@Scheduled
public void task1() {
if(flag) {
....
}
}
@Scheduled
public void task2() {...}
}