如何获取java配置类中定义的bean列表?

时间:2017-09-22 07:44:18

标签: spring spring-boot dependency-injection spring-ioc

spring java配置类可以在其中定义多个bean。我知道如何获取在java spring配置类中定义的单个bean。有点像 -

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

但我想知道使用单个方法调用是否有办法获取配置类中定义的每个bean。 bean configurer类如下所示。所有类 - 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 () ;
    }

}

我感兴趣的是进行单个方法调用并将所有bean放入列表中。如下所示:

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

或只是

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

有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用ctx.getBeansOfType(ClassAlphabets.class)

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

更多详情in the Javadocs

这不一定是这样的:“获取java配置类中定义的bean列表”但确实满足OP中此准代码隐含的要求:

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