Spring没有找到由注释生成的bean

时间:2013-02-05 15:14:04

标签: java spring inversion-of-control spring-3

我想从我的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 个答案:

答案 0 :(得分:0)

抱歉,有些愚蠢的错误......我没有正确加载我的xml文件,但是被实例化为某些后台进程的bean正在使用正确的文件创建并行xml上下文。

答案 1 :(得分:-1)

我遇到过类似的问题,我从未让getBeansOfType()正常工作。我的解决方案:

@Autowired
public void setMyClasses( List<MyClass> beans ) {
    ...
}

Spring将以某种方式收集列表并注入它。如果您不需要知道何时注入列表,您也可以将其作为字段注入:

@Autowired
private List<MyClass> beans;

答案 2 :(得分:-1)

您还必须在

中搜索您的bean
AnnotationConfigApplicationContext

如果要在XmlContext和AnnotationContext中进行搜索,则必须将它们与

组合
 @ImportResource("classpath:xmlcontext.xml")

在带注释的配置

或者您可以尝试实现ApplicationContextAware接口并在其提供的上下文中进行搜索。