2016-10-19 3 views
1

Как вернуть произвольное число объектов @Bean одного типа с помощью класса @Configuration? Что-то вроде:Весна нескольких настроенных фасонов одного и того же интерфейса

@Configuration 
public class MyClass { 
    @Bean 
    public MyBean myBean { 
    for (String myBeanName: getMyBeanNames()) { 
    MyBean myBean = new MyBean(); 
    myBean.setName(myBeanName); 
    return myBean 
    } 
} 

Очевидно, что фрагмент не компилируется, но как бы я добиться результата?

+0

Возможный дубликат [Handling несколько реализаций один Spring боба/интерфейс] (http://stackoverflow.com/questions/11777079/handling-several-implementations-of -one-spring-bean-interface) –

+0

вы не можете, метод myBean должен возвращать один экземпляр класса, конфигурация внутри кода заменяет только xml, вы указываете имя или тип, и вы получаете требуемый bean, если вам нужно много разных фасолей, вам понадобятся многие методы, аннотированные с @Bean для каждого из них. – OscarG

+0

@ Исаам. Не дубликат. Это произвольное количество фасоли. Использование Qualifier работает только для предопределенного набора. – newToScala

ответ

0

я в конечном итоге делает это:

@PostConstruct 
public void postConstruct() { 
    ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) applicationContext).getBeanFactory();  
    for (String myBeanName: getMyBeanNames()) { 
     MyBean myBean = new MyBean(); 
     myBean.setName(myBeanName); 
     beanFactory.registerSingleton(myBean.class.getName() + myBean.getName(), myBean) 
    } 
    } 
Смежные вопросы