0

我想从我的 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?
4

3 回答 3

0

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

于 2013-02-05T16:26:03.840 回答
-1

我见过类似的问题,但我从来没有getBeansOfType()正常工作。我的解决方案:

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

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

@Autowired
private List<MyClass> beans;
于 2013-02-05T15:24:06.120 回答
-1

您还必须在

AnnotationConfigApplicationContext

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

 @ImportResource("classpath:xmlcontext.xml")

在带注释的配置中

或者你可以尝试实现ApplicationContextAware接口并在它提供的上下文中搜索。

于 2013-02-05T15:24:07.913 回答