如何在这里设置自己的变量 - “${cron.expression}”?
该参数需要最终常量。我想在程序运行时动态更改这些值。例如,我需要在执行此元素时设置
LocalDate
。
请写一个例子,我该怎么做。
@Service
public class ScheduledService {
@Scheduled(cron = "${cron.expression}")
public void demoServiceMethod() {
//do something
}
}
无法动态设置注释参数。您可以通过编程方式完成此操作,如下所示。
class Scheduler implements Runnable {
public Scheduler(TaskScheduler scheduler, String timezone, String cron) {
scheduler.schedule(this, new CronTrigger(cron, TimeZone.getTimeZone(timezone)));
}
@Override
public void run() {
//code goes here
}
}
我是这样解决这个问题的: 我将使用@Scheduled 检查数据库中的日期。 如果今天 - 我需要的日期 - 做某事......就像这样:
@Scheduled(fixedRate = 86_400_000)// One day
public void demoServiceMethod() {
if(Localdate.now().isEqual(//date that I need)){
//do something
}
//do something everyday
}
你可以这样做
@Scheduled(cron = "${app.cron-parameter}")