如果存在属性,我想触发特定的预定功能。
我的属性如下:
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}"
答案 0 :(得分:1)
特殊值“-”表示已禁用的cron触发器,主要用于由$ {...}占位符解析的外部指定值。
您可以为cron表达式使用默认的负值:
@Scheduled(cron = "${tasks.task2.interval:-}")
有关默认值的更多信息,请参见here。