在 Spring 配置中设置公共变量

Set common variable in Spring Configuration

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

@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);
    }

你可以这样做:

@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());
    }
}

这样你就可以确保 variable 将在 service1service2 之前初始化,请注意 DependsOn 在这种情况下只是为了说明目的。