在Spring Configuration

时间:2017-03-04 22:57:49

标签: java spring spring-annotations

我有一个像这样的Java Spring Configuration类。我想设置一个我的几个bean依赖的变量,将它变成一个bean,并将其用作依赖项。如何让setVariable()方法先发生?我是从Guice转换代码的,这个变量是在被覆盖的配置中设置的。方法。春天有类似的东西吗?

@Configuration
class SpringConfiguration{
    String variable;

    public void setVariable(){
        variable = System.getenv("whatever")
    }

    @Bean
public void variable(){
    return variable;
}

    @Bean
    public void myService(){
        return new MyService(variable);
    }

    @Bean
    public void myService2(){
        return new MyService2(variable);
    }

1 个答案:

答案 0 :(得分:3)

您可以这样做:

@Configuration
class SpringConfiguration {

    @Bean(name="variable")
    public String geVariable() {
        return System.getenv("whatever");
    }

    @Bean
    @DependsOn("variable")
    public MyService getMyService() {
        return new MyService(geVariable());
    }

    @Bean
    @DependsOn("variable")
    public MyService2 getMyService2() {
        return new MyService2(geVariable());
    }
}

您可以确保在variableservice1之前初始化service2,请注意DependsOn在这种情况下仅用于澄清目的。