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

问题描述 投票:0回答:3

如何在这里设置自己的变量 - “${cron.expression}”?

该参数需要最终常量。我想在程序运行时动态更改这些值。例如,我需要在执行此元素时设置

LocalDate

请写一个例子,我该怎么做。

@Service
    public class ScheduledService {
        @Scheduled(cron = "${cron.expression}")
        public void demoServiceMethod() {
            //do something 
        }

    }
java spring-mvc spring-boot scheduled-tasks spring-scheduled
3个回答
0
投票

无法动态设置注释参数。您可以通过编程方式完成此操作,如下所示。

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
    }
}

0
投票

我是这样解决这个问题的: 我将使用@Scheduled 检查数据库中的日期。 如果今天 - 我需要的日期 - 做某事......就像这样:

@Scheduled(fixedRate = 86_400_000)// One day
    public void demoServiceMethod() {
if(Localdate.now().isEqual(//date that I need)){
//do something
   }
        //do something everyday
 }

0
投票

你可以这样做

@Scheduled(cron = "${app.cron-parameter}")
© www.soinside.com 2019 - 2024. All rights reserved.