我正在使用@ConfigurationProperties
在Spring启动中配置后台任务的延迟,并且尝试在另一个组件上使用@Scheduled
批注中的该值。但是,为了使其工作,我必须使用Spring赋予bean的全名。
配置属性类如下:
@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");
}
}
是否可以引用该值而不必使用bean的全名? This answer建议可以,但我无法使其正常工作。
最佳答案
在属性类上使用@Component
允许以"#{@someProperties.persistence.delay}
的形式访问属性。
在spring boot documentation中有更多信息。