一尘不染

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

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的全名?这个答案表明有可能,但我一直无法使它起作用。


阅读 315

收藏
2020-05-30

共1个答案

一尘不染

使用@Component的特性类允许访问的财产"#{@someProperties.persistence.delay}

Spring Boot文档中有更多信息。

2020-05-30