我想从我的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?
答案 0 :(得分:0)
抱歉,有些愚蠢的错误......我没有正确加载我的xml文件,但是被实例化为某些后台进程的bean正在使用正确的文件创建并行xml上下文。
答案 1 :(得分:-1)
我遇到过类似的问题,我从未让getBeansOfType()
正常工作。我的解决方案:
@Autowired
public void setMyClasses( List<MyClass> beans ) {
...
}
Spring将以某种方式收集列表并注入它。如果您不需要知道何时注入列表,您也可以将其作为字段注入:
@Autowired
private List<MyClass> beans;
答案 2 :(得分:-1)
您还必须在
中搜索您的beanAnnotationConfigApplicationContext
如果要在XmlContext和AnnotationContext中进行搜索,则必须将它们与
组合 @ImportResource("classpath:xmlcontext.xml")
在带注释的配置
中或者您可以尝试实现ApplicationContextAware
接口并在其提供的上下文中进行搜索。