Inject @Scheduled fixedRate значение из Spring Загрузите файл application.yml

Я знаю, что могу внести значение из файла свойств в следующий синтаксис:

@Scheduled(fixedRate=${myRate})
public void getSchedule(){
    System.out.println("in scheduled job");
}

Однако я не могу догадаться, как это сделать, если конфигурация находится в файле YAML.

Спасибо заранее,

Ответ 1

В моем application.properties(YAML) я поместил этот

console:
    fetchMetrics: 5000

Затем в моем простом классе Task я нажимаю определение:

@Scheduled(fixedRateString ="${console.fetchMetrics}", initialDelay=1000)
public void fetchMetrics() {
    logger.info("What up ?");
}

Обратите внимание, что fixedRate ожидает long, и вы хотите ввести заполнитель, вам потребуется fixedRateString

Ответ 2

Я считаю, что это легко сделать для моего проекта.
Измените fixedRate на fixedRateString и вставьте ключ свойства в double quotes следующим образом:

@Scheduled(fixedRateString="${myRate}")
public void getSchedule() {
    System.out.println("Scheduled job");
}

Ответ 3

В моем приложении я использую аннотацию PropertySource в моем классе конфигурации:

@PropertySource("application-${spring.profiles.active}.yml")

spring.profiles.active возвращает активный профиль (dev, test и т.д.). Мое имя файла свойств - application-dev.yml

Аннотация @Scheduled работает с введением свойств. Не забывайте аннотацию с конфигурацией префикса в своем классе.