在Spring应用程序中,可以使用applicationContext.getBeansOfType(Object.class)检索所有(?)Bean。当然,只有在创建了所有Bean之后,这才有可能。

因此,如果我在Bean的构造函数中调用此方法,那么我必须很幸运,成为最后一个要创建的Bean,才能访问所有它们。

据我了解Spring Bean的life cycle,在Bean初始化之前,有一个阶段创建BeanDefinition。


如何在Bean的构造函数中检索所有创建的BeanDefinition?
我还可以检索那些BeanDefinitions的类型(作为Class)吗?类型BeanDefinition似乎仅提供“此bean定义的当前bean类名”。


还是在构造完所有Bean之后(例如@PostConstruct)获取这些类型的唯一方法?

最佳答案

也许这段代码可以帮助

    for (String name : applicationContext.getBeanFactory().getBeanDefinitionNames()) {
        BeanDefinition beanDefinition = applicationContext.getBeanFactory().getBeanDefinition(name);
        String className = beanDefinition.getBeanClassName();
        Class<?> clazz = Class.forName(className);
    }


循环为您提供所有BeanDefinition,然后为每个加载类并执行您想要的操作?

顺便说一句,这可能不是使用Spring的好方法,但是它将起作用。

07-28 12:20