如果存在属性,我想触发特定的计划函数。
我的属性如下:
tasks:
task1:
interval: "* * * ? * *"
task2:
interval: "0 * * ? * *"
这些是我的功能:
@Scheduled(cron = "${tasks.task1.interval}")
public void doTask1()
{
// do something
}
@Scheduled(cron = "${tasks.task2.interval}")
public void doTask2()
{
// do something
}
我想要实现的是,如果未指定 task2 属性,则不会触发 doTask2()。
属性:
tasks:
task1:
interval: "* * * ? * *"
功能:
@ConditionalOnProperty(value = "tasks.task1")
@Scheduled(cron = "${tasks.task1.interval}")
public void doTask1()
{
// do something
}
@ConditionalOnProperty(value = "tasks.task2")
@Scheduled(cron = "${tasks.task2.interval}")
public void doTask2()
{
// do something
}
如果我尝试此设置,我总是会收到以下错误:
Could not resolve placeholder 'tasks.task2.interval' in value "${tasks.task2.interval}"
最佳答案
The special value "-" indicates a disabled cron trigger, primarily meant for externally specified values resolved by a ${...} placeholder.
您可以为 cron 表达式使用默认的负值:
@Scheduled(cron = "${tasks.task2.interval:-}")
有关默认值的更多信息可以找到 here .
关于java - @ConditionalOnProperty 和 @Scheduled 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58521677/