我正在尝试在 Spring 中创建指定数量的相同类型的 bean。
我试过了:
@Bean(name = "beanList")
public List<MyBean> beanList(
@Value("${number:1}") int number
) {
List<MyBean> beanList = new ArrayList<>(number);
for (int i = 0; i < number; i++) {
beanList.add(new MyBean());
}
return beanList;
}
但这并不是我们所期望的。
这样,bean“beanList”是由spring上下文维护的,而不是它的元素,所以我不能为每个元素指定名称和 init 方法或 destroy 方法在列表中。
有任何想法吗?
你可以看看BeanFactory后处理器,我尝试使用以下代码,它工作得很好,Bean
s 取决于MyBean
也可以是autowire
d:
@Configuration
public class AppConfig implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
for (int i = 0; i < 3; i++) {
System.out.println("register my bean: " + i);
beanFactory.registerSingleton("bean-" + i, new MyBean("MyBean-" + i));
}
}
}
由于您可以完全控制创建过程MyBean
例如,如果有必要,您可以简单地通过构造函数传递其他 bean。希望这对您有帮助:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)