установка различных параметров cron в Java весной @Scheduled - PullRequest
0 голосов
/ 05 октября 2018

Как я могу установить здесь свою собственную переменную - "$ {cron.expression}"?

Этот параметр хочет получить конечную константу.Я хочу динамически изменять значения во время работы программы.Например, мне нужно установить LocalDate, когда должен выполняться этот элемент.

Пожалуйста, напишите пример, как я могу это сделать.

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

    }

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я решил эту проблему следующим образом: я буду использовать @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 голосов
/ 05 октября 2018

Вы не можете установить параметры аннотации динамически.Вы можете сделать это программно, как показано ниже.

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...