Estoy tratando de crear una cantidad específica de frijoles del mismo tipo en Spring.
He intentado:
@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; }Pero esto no es lo que esperaba.
De esta manera, el bean "beanList" se mantiene en el contexto de primavera, en lugar de sus elementos, por lo que no puedo especificar un nombre y un método de inicio o un método de destrucción para cada elemento de la lista.
¿Algunas ideas?
Podría echar un vistazo a BeanFactoryPostProcessor , probé con el siguiente código y funciona bien, Bean s depende de MyBean también podría ser 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)); } } } Dado que tiene el control completo del proceso de creación de la instancia de MyBean , simplemente puede pasar otros beans a través del constructor si es necesario. Espero que esto pueda ser útil para usted :-)