我正在@ConfigurationProperties配置Spring引导中后台任务的延迟,并且试图@Scheduled在另一个组件的注释中使用此值。但是,为了使其工作,我必须使用Spring赋予bean的全名。
@ConfigurationProperties
@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"); } }
是否可以引用该值而不必使用bean的全名?这个答案表明有可能,但我一直无法使它起作用。
使用@Component的特性类允许访问的财产"#{@someProperties.persistence.delay}。
@Component
"#{@someProperties.persistence.delay}
在Spring Boot文档中有更多信息。