我正在尝试在 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;
}
Run Code Online (Sandbox Code Playgroud)
但这不是预期的。
这样,bean“beanList”由spring上下文维护,而不是它的元素,因此我无法为列表中的每个元素指定名称和init方法或destroy方法。
有任何想法吗?
你可以看看BeanFactoryPostProcessor,我尝试了下面的代码,它工作得很好,BeansMyBean也可以是autowired:
@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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于您可以完全控制MyBean实例的创建过程,因此您可以在必要时通过构造函数简单地传递其他 bean。希望这对你有帮助:-)
| 归档时间: |
|
| 查看次数: |
9928 次 |
| 最近记录: |