#java #spring-boot #properties #cron #spring-boot-admin
#java #spring-boot #свойства #cron #spring-boot-admin
Вопрос:
В моем приложении у меня есть метод, аннотированный @Scheduled(cron="${my.cron.prop}")
У меня нет my.cron.prop
файла свойств, и моя работа просто не запускается, но приложение запускается успешно.
Но когда я добавляю dependecy:
compile ("de.codecentric:spring-boot-admin-starter-client:1.5.7")
Мое приложение не запускается:
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'reportCurrentTime': Could not resolve placeholder 'my.cron.prop' in value "${my.cron.prop}"
Как я могу это исправить?
Ожидаемое поведение — просто не запускайте задание, если свойство не предоставлено
Ответ №1:
Я предполагаю, что ваше приложение этого не сделало @EnableScheduling
, spring-boot-admin-starter-client делает.
Вы могли бы избежать этого, указав значение по умолчанию: смотрите Другой ответ
лучший способ исправить это — использовать выделенный компонент для запуска вашего задания, когда свойство доступно
@Component
@ConditionalOnProperty( name = "my.cron.prop" )
public class Tasks {
@Scheduled(cron = "${my.cron.prop}")
public void task() {
/*do your suff*/
}
Ответ №2:
Вы могли бы попробовать что-то подобное: @Scheduled(cron="${my.cron.prop:0 0 0 1 1 ? 2090}")
В этом случае, если свойство не может быть найдено, Spring будет использовать значение по умолчанию, которое вы указали (запуск в 2090 в моем примере).
Комментарии:
1. да, это хороший обходной путь. Но я хочу выяснить, почему это происходит после добавления зависимости