我想问一下有没有检测到所有bean都已经在Spring框架中实例化了?
我正在使用Spring库的FileSystemXmlApplicationContext类来加载我的Spring配置XML。
我知道在bean工厂实例化之后我可以获得所有bean。我的愚蠢解决方案是在Spring API中使用getBean(String name)方法,并在Spring配置XML中检查所有需要的bean。如果可以找到所有需要的bean,我可以推断所有bean都已经实例化了。
我不喜欢愚蠢的解决方案的原因是我更新配置XML的任何时候,我需要更新我的源代码再次检查。如果此解决方案有更多漏洞,请随时指出。
感谢您的时间和善意的建议
答案 0 :(得分:1)
您可以将BeanPostProcessor添加到您的上下文
class B1 implements BeanPostProcessor {
List beans = new ArrayList();
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
beans.add(bean);
return bean;
}
List getBeans() {
return beans;
}
...
答案 1 :(得分:0)
如何使用getBeansOfType(Object.class)?
您将获得一个包含应用程序上下文中所有名称 - bean对的映射。这也是一个包含非单身人士的版本,但你只会获得顶级bean。