在 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
将在 service1
和 service2
之前初始化,请注意 DependsOn
在这种情况下只是为了说明目的。
我有一个 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
将在 service1
和 service2
之前初始化,请注意 DependsOn
在这种情况下只是为了说明目的。