我正在使用@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中有更多信息。

08-04 15:19