Не удалось разрешить заполнитель после добавления зависимости spring-boot-admin-starter-client

#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. да, это хороший обходной путь. Но я хочу выяснить, почему это происходит после добавления зависимости