在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的好方法,但是它将起作用。