通过引用bean名称在@Scheduled注释中使用@ConfigurationProperties

时间:2018-02-28 16:45:25

标签: java spring spring-boot

我使用@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表明这是可能的,但我还没有能够使它发挥作用。

1 个答案:

答案 0 :(得分:6)

在属性类上使用@Component允许以"#{@someProperties.persistence.delay}访问该属性。

spring boot documentation中的更多信息。