Запланированная работа в Spring Boot - PullRequest
0 голосов
/ 11 июня 2018

У меня есть выражение cron, заданное в файле свойств приложения следующим образом:

report.monthlyScheduleTime=0 10 07 1W * ?

и аннотированное следующим образом:

@Scheduled(cron = "${report.monthlyScheduleTime}", zone="${report.scheduleTimeZone}")

Но когда я запустил приложение, я получилследующее исключение.

Причина: java.lang.IllegalStateException: обнаружен недопустимый метод @Scheduled «ReportJob»: для входной строки: «1W».

Похоже, Spring Bootне принимать 1W, определенный в выражении cron.Есть идеи почему?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Spring Boot, кажется, не принимает 1W, определенный в выражении cron.Любая идея, почему?

1W является специфическим для Кварца, но вы не используете Кварц.


Ваше выражение хрон (0 10 07 1W * ?) является правильным на основе Кварцевая документация :

'W' используется для указания дня недели (понедельник-пятница), ближайшего к данному дню.Например, если вы указали «15W» в качестве значения для поля дня месяца, значение будет следующим: «ближайший день недели до 15 числа месяца».

Ношаблон 1W специфичен для Quartz.

С @Scheduled вы используете собственную поддержку планирования Spring.Это позволяет использовать выражения, основанные на шаблоне Crontab , но не поддерживает 1W.

Так что вам нужно либо использовать Quartz, либо изменить выражение cron.Если вы хотите использовать Quartz, в документации Spring по расписанию , раздел «Использование Quartz Scheduler» описывает поддержку Spring для Quartz.Однако, если вы хотите изменить выражение cron, вы можете обратиться к CronSequenceGenerator.

0 голосов
/ 11 июня 2018

не уверен, какой cron вы хотели создать, но, возможно, эти примеры помогут вам понять вашу проблему:

Example patterns:

"0 0 * * * *" = the top of every hour of every day.
"*/10 * * * * *" = every ten seconds.
"0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
"0 0 6,19 * * *" = 6:00 AM and 7:00 PM every day.
"0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day.
"0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
"0 0 0 25 12 ?" = every Christmas Day at midnight
...