我想从我的spring上下文中检索属于某个类(或子类)的所有bean,但这只检测由xml专门定义的bean,而由注解定义的bean,如@Service
,在这里是检测不到的(尽管在应用程序内部,它们可以被检测、初始化和自动连接)。
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("*-context.xml");
Map<String, DataUpdater> beans = ctx.getBeansOfType(MyClass.class, true, true);
// why are beans missing?
3条答案
按热度按时间rsaldnfx1#
我见过类似的问题,我从来没有让
getBeansOfType()
正常工作。我的解决方案:Spring会以某种方式收集列表并注入它,如果你不需要知道列表是什么时候注入的,你也可以把它作为一个字段注入:
zmeyuzjn2#
你还必须在
如果要在XmlContext和AnnotationContext中搜索,则必须将它们与组合使用
在带注解的配置中
也可以尝试实现
ApplicationContextAware
接口,在它提供的Context中进行搜索。xghobddn3#
对不起,一些愚蠢的错误...我没有正确地加载我的xml文件,但是bean正在被示例化,因为一些后台进程正在用正确的文件创建一个并行的xml上下文。