Использование @ConfigurationProperties в аннотации @Scheduled путем ссылки на имя компонента
Я использую @ConfigurationProperties
для настройки задержки фоновой задачи в Spring boot, и я пытаюсь использовать это значение из аннотации @Scheduled
на другом компоненте. Однако, чтобы заставить его работать, я должен использовать полное имя, данное Бобу весной.
Класс свойств конфигурации выглядит следующим образом:
@ConfigurationProperties("some")
class SomeProperties {
private int millis; //the property is some.millis
public int getMillis() {
return millis;
}
public void setMillis(int millis) {
this.millis = millis;
}
}
И я использую значение следующим образом в запланированном методе:
@Component
class BackgroundTasks {
@Scheduled(fixedDelayString = "#{@'some-com.example.demo.SomeProperties'.millis}") //this works.
public void sayHello(){
System.out.println("hello");
}
}
Можно ли ссылаться на значение, не используя полное имя Боба? Этот ответ предполагает, что это возможно, но я не смог заставить его работать.
2 ответа:
Использование
@Component
в классе свойств позволяет получить доступ к свойству как"#{@someProperties.persistence.delay}
.Подробнее в весна загрузки документации.