我正在将旧的Spring
项目迁移到SpringBoot
。旧项目具有基于XML
的配置。
我在旧配置中有一个bean声明列表,如下所示:
<bean id="basic" class="com.xyz.Parameter" abstract=true>
</bean>
<!-- List -->
<util:list id="searches">
<bean parent="basic" id="roles">
<property name="name" value="abc">
...
...
</bean>
<bean parent="basic" id="simple">
<property name="name" value="abc">
...
...
</bean>
<bean parent="basic" id="user">
<property name="name" value="abc">
...
...
</bean>
</util:list>
现在,在Java配置文件中,我做了如下操作:
@Configuration
class WebConfig{
@Bean ("Basic")
public Parameter basic(){
return Parameter.builder ()
.format (Pattern.compile("^ [A-Za-20-9]")
.maxLength (100) build();
}
@Bean
public Parameter simple (@Qualifier ("Basic") Parameter basic){
return basic.toBuilder ()
.field ("attribute")
.Label ("Attribute Nane").build();
}
@Bean
public Parameter user(@Qualifier ("Basic") Parameter basic){
Parameter product = basic. toBuilder ()
.field ("product")
.label ("Product").build();
}
//TODO: List implementation
@Bean("searches")
public List< Parameter> getSearch(){
return List.of(user()); //It requires params
}
}
计划是编译所有bean的列表,并在需要时将其用作@Resource
。
那么,构建bean列表的最佳技术是什么?我应该使用BeanFactory
来检索bean并将它们添加到列表中,而不是单独调用每个bean函数吗?
2条答案
按热度按时间czq61nw11#
声明多个相同类型的bean之后,您可以只使用
@Autowired List<MyBean> myBeans;
或@Autowired Map<String, MyBean> myBeans;
,其中map key是bean名称。@Autowired
在这里只是作为一个例子,任何Spring注入类型都可以工作。eh57zj3b2#
正如前面的答案所述,您可以简单地注入具有相同类型的bean集合。
有关此方法的详细信息,请参阅in this article