Весеннее расписание - последний день месяца не работает - PullRequest
0 голосов
/ 29 января 2019

Я хотел запустить задание весеннего планировщика в «последний день каждого месяца в 10:15» и «первое воскресенье каждого месяца» -

Я пробовал ниже - но при инициализации он выдает ошибкуконтекст пружины:

org.springframework.boot.SpringApplication: сбой запуска приложения* @Override @Scheduled(cron = "0 15 10 L * ?") public void monthEndSchedule() { // } Хотя ниже приведены работы, которые выполняются «каждый день в 1 час ночи»

@Override
@Scheduled(cron = "0 0 1 * * ?")
public void surveyDailySchedule() {
//
}

Ссылка на выражение Cron, которое я использовал: http://www.quartz -scheduler.org / documents / quartz-2.x / учебники / crontrigger.html

1 Ответ

0 голосов
/ 23 апреля 2019

Spring Scheduler не поддерживает входную строку "L".Итак, вам нужно сделать обходной путь.

Во-первых, вызовите планировщик для каждого из возможных последних дней месяцев (28, 29, 30, 31).

Затем, внутри функционального блока, проверьте с помощью блока if, является ли этопоследнее свидание.Если это так, то выполните ожидаемое задание.

Код будет таким -

@Scheduled(cron = "0 15 10 28-31 * ?")
public void monthEndSchedule() {
    final Calendar c = Calendar.getInstance();
    if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
        // do your stuff
    }
}
...