Spring @Configuration 类,如何配置同一个bean的多个实例传递不同的参数
Spring @Configuration classes, how to configure multiple instances of the same bean passing different parameters
我有一个 Spring Java 配置 class 在里面定义了一个 bean,例如:
@Configuration
public class SomeConfig{
private String someProperty;
public SomeConfig(String someProperty){
this.someProperty=someProperty;
}
@Bean
public SomeBean someBean(){
SomeBean s = new SomeBean(someProperty);
return s;
}
}
我需要多个 SomeBean
实例,每个实例都配置了不同的 someProperty
值。
- 在 Spring 引导应用程序中,是否可以多次
@Import
相同的 class?
自答:如果您导入相同的@Configuration class,它将覆盖现有的。
- 如何使用 Spring Java 配置完成这样的事情?
更新:
在XML我能做到:
<bean class="x.y.z.SomeBean">
<constructor-arg value="1"/>
</bean>
<bean class="x.y.z.SomeBean">
<constructor-arg value="2"/>
</bean>
我正在寻找 Java Config
的等效项
@Configuration
public class SomeConfig{
private String someProperty;
@Bean
public OtherBean otherBeanOne(){
OtherBean otherBean = new OhterBean();
otherBean.setSomeBean(someBean("property1"));
return otherBean;
}
@Bean
public OtherBean otherBeanTwo(){
OtherBean otherBean = new OhterBean();
otherBean.setSomeBean(someBean("property2"));
return otherBean;
}
@Bean
public SomeBean someBean(String someProperty){
SomeBean s = new SomeBean(someProperty);
return s;
}
}
我只需要使用另一个 @Configuration class 即可根据需要定义尽可能多的 SomeConfig beans:
@Configuration
public class ApplicationConfig{
@Bean
public SomeConfig someConfig1(){
return new SomeConfig("1");
}
@Bean
public SomeConfig someConfig2(){
return new SomeConfig("2");
}
}
我有一个 Spring Java 配置 class 在里面定义了一个 bean,例如:
@Configuration
public class SomeConfig{
private String someProperty;
public SomeConfig(String someProperty){
this.someProperty=someProperty;
}
@Bean
public SomeBean someBean(){
SomeBean s = new SomeBean(someProperty);
return s;
}
}
我需要多个 SomeBean
实例,每个实例都配置了不同的 someProperty
值。
- 在 Spring 引导应用程序中,是否可以多次
@Import
相同的 class? 自答:如果您导入相同的@Configuration class,它将覆盖现有的。 - 如何使用 Spring Java 配置完成这样的事情?
更新:
在XML我能做到:
<bean class="x.y.z.SomeBean">
<constructor-arg value="1"/>
</bean>
<bean class="x.y.z.SomeBean">
<constructor-arg value="2"/>
</bean>
我正在寻找 Java Config
的等效项@Configuration
public class SomeConfig{
private String someProperty;
@Bean
public OtherBean otherBeanOne(){
OtherBean otherBean = new OhterBean();
otherBean.setSomeBean(someBean("property1"));
return otherBean;
}
@Bean
public OtherBean otherBeanTwo(){
OtherBean otherBean = new OhterBean();
otherBean.setSomeBean(someBean("property2"));
return otherBean;
}
@Bean
public SomeBean someBean(String someProperty){
SomeBean s = new SomeBean(someProperty);
return s;
}
}
我只需要使用另一个 @Configuration class 即可根据需要定义尽可能多的 SomeConfig beans:
@Configuration
public class ApplicationConfig{
@Bean
public SomeConfig someConfig1(){
return new SomeConfig("1");
}
@Bean
public SomeConfig someConfig2(){
return new SomeConfig("2");
}
}