在 java spring @Scheduled 中动态设置不同的 cron 参数

setting different cron params dynamically in java spring @Scheduled

如何在此处设置我自己的变量 - "${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
 }