Spring cron, использующий аннотацию @Scheduled, не получает выражение из файла свойств - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь прочитать выражение cron из файла свойств для @Scheduled annotation.

Однако, когда я запускаю сервер, я получаю сообщение об ошибке, как показано ниже

Encountered invalid @Scheduled method 'scheduleServicePrincipalOrchestorJob': For input string: "'0

Не уверен, что здесь происходит.

Моя аннотация выглядит как -

@Scheduled(cron= "${abc.cronExpression}", zone="America/Los_Angeles")

Мои application.properties выглядят так:

abc.cronExpression="0 8 0 0 0 0"

Есть ли какие-либо сведения о том, что идет не так?

Ответы [ 3 ]

0 голосов
/ 20 марта 2020

Выражение cron в Spring с использованием @Scheduled состоит из следующих частей:

<second> <minute> <hour> <day-of-month> <month> <day-of-week> <year>

Где последняя часть <year> является необязательной.

В вашем примере вы используете и 0 для <day-of-month> и <month>, что невозможно, поскольку они начинаются не с 0, а с 1.

Ваш cron работает со следующими двумя настройками:

bc.cronExpression=0 8 0 * * 0

Где * означает любой день месяца за любой месяц.

Или вы можете использовать следующее для выполнения вашего кода только в первый день первого месяца:

bc.cronExpression=0 8 0 1 1 0

Для получения дополнительной информации, Bealdung составил отличное руководство к выражениям cron, которые могут помочь вам понять это дальше.

0 голосов
/ 20 марта 2020

Возможно, вы можете сослаться на это.

Значение атрибута аннотации Scheduled.cron должно быть константным выражением

{ ссылка }

0 голосов
/ 20 марта 2020

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

ab c .cronExpression = 0 0/5 * * *?

То есть в секунду 0, каждые 5 минут, каждый день.

...