Как получить список bean-компонентов, определенных в классе конфигурации Java?

В классе конфигурации Spring Java может быть определено более одного bean-компонента. Я знаю, как получить один bean-компонент, который определен в классе конфигурации java spring. Что-то типа -

AnnotationConfigApplicationContext ctx = new  AnnotationConfigApplicationContext(BeanConfigurer.class);
ClassA a = ctx.getBean(ClassA.class);

Но я хочу знать, есть ли способ получить каждый bean-компонент, определенный в классе конфигурации, с помощью одного вызова метода. Класс конфигуратора bean-компонента выглядит примерно так, как показано ниже. Все классы — ClassA, ClassB, ClassC расширяют общий родительский ClassAlphabet.

@Configuration
public class BeanConfigurer {

    @Bean
    public ClassA classA()
    {
        return new ClassA () ;
    }


    @Bean
    public ClassB classB()
    {
        return new ClassB () ;
    }


    @Bean
    public ClassC classC()
    {
        return new ClassC () ;
    }

}

И я заинтересован в том, чтобы сделать вызов одного метода и получить все компоненты в списке. что-то вроде ниже:

 List<ClassAlphabet> listOfClasses = ctx.getBeans(ClassAlphabets.class); 

или просто

List<ClassAlphabet> listOfClasses = ctx.getBeans();

Является ли это возможным??


person samshers    schedule 22.09.2017    source источник


Ответы (1)


Вы можете использовать ctx.getBeansOfType(ClassAlphabets.class).

<T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;

Подробнее в Javadocs.

Это не обязательно делает это: «получить список bean-компонентов, определенных в классе конфигурации Java», но он действительно соответствует требованию, подразумеваемому этим квази-кодом из OP:

List<ClassAlphabet> listOfClasses = ctx.getBeans(ClassAlphabets.class); 
List<ClassAlphabet> listOfClasses = ctx.getBeans();
person glytching    schedule 22.09.2017