我有一个像这样的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);
}
答案 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());
}
}
您可以确保在variable
和service1
之前初始化service2
,请注意DependsOn
在这种情况下仅用于澄清目的。