java Spring找不到由注解生成的Bean

jv4diomz  于 2023-02-07  发布在  Java
关注(0)|答案(3)|浏览(161)

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

rsaldnfx1#

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

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

Spring会以某种方式收集列表并注入它,如果你不需要知道列表是什么时候注入的,你也可以把它作为一个字段注入:

@Autowired
private List<MyClass> beans;
zmeyuzjn

zmeyuzjn2#

你还必须在

AnnotationConfigApplicationContext

如果要在XmlContext和AnnotationContext中搜索,则必须将它们与组合使用

@ImportResource("classpath:xmlcontext.xml")

在带注解的配置中
也可以尝试实现ApplicationContextAware接口,在它提供的Context中进行搜索。

xghobddn

xghobddn3#

对不起,一些愚蠢的错误...我没有正确地加载我的xml文件,但是bean正在被示例化,因为一些后台进程正在用正确的文件创建一个并行的xml上下文。

相关问题