检测所有bean已在Spring框架中实例化

时间:2014-06-27 02:15:14

标签: java spring

我想问一下有没有检测到所有bean都已经在Spring框架中实例化了?

我正在使用Spring库的FileSystemXmlApplicationContext类来加载我的Spring配置XML。

我知道在bean工厂实例化之后我可以获得所有bean。我的愚蠢解决方案是在Spring API中使用getBean(String name)方法,并在Spring配置XML中检查所有需要的bean。如果可以找到所有需要的bean,我可以推断所有bean都已经实例化了。

我不喜欢愚蠢的解决方案的原因是我更新配置XML的任何时候,我需要更新我的源代码再次检查。如果此解决方案有更多漏洞,请随时指出。

感谢您的时间和善意的建议

2 个答案:

答案 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。