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();
有可能吗?
答案 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();