我以编程方式注册了bean:
@Autowired
private GenericApplicationContext applicationContext;
[...]
applicationContext.registerBean("a0", A.class, () -> new A(0));
// make sure to set up the bean
applicationContext.getBean("a0");
当我想按名称获取此bean时,它可以工作并且总是返回相同的实例:
applicationContext.getBean("a0");
但是,当我想获取所有A.class类型的bean时,它将返回一个空Map:
Map<String, A> as = applicationContext.getBeansOfType(A.class);
如= []!
我正在使用Spring 5.0,为什么Spring可以在上下文中考虑没有A类型的bean却可以按名称检索它们呢?
改用BeanFactoryUtils.beansOfTypeIn includedAncestors:
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, A.class)
见春季论坛答案:
不考虑该工厂可能参与的任何层次结构。也可以使用BeanFactoryUtils的beansOfTypeIn includedAncestors将Bean包括在祖先工厂中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句