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

问题描述 投票:5回答:1

我正在使用@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认为这是可能的,但我无法使其发挥作用。

java spring spring-boot
1个回答
6
投票

使用@Componenton,属性类允许以"#{@someProperties.persistence.delay}的形式访问该属性。

更多信息在spring boot documentation

© www.soinside.com 2019 - 2024. All rights reserved.