Spring 2-看看容器中有什么
一、初始化
// 1. 资源Resource res = new ClassPathResource("beans.xml");// 2. 初始化IOC容器BeanFactory beanFactory = new XmlBeanFactory(res);?二、如何查看容器中的bean定义信息?
// 3. 转化为可枚举容器ListableBeanFactory listableBeanFactory = null;if (beanFactory instanceof ListableBeanFactory) {listableBeanFactory = (ListableBeanFactory) beanFactory;}if (listableBeanFactory == null) {throw new RuntimeException("listableBeanFactory is null.");}// 4. 转化为BeanDefinitionRegistryBeanDefinitionRegistry beanDefinitionRegistry = null;if (beanFactory instanceof BeanDefinitionRegistry) {beanDefinitionRegistry = (BeanDefinitionRegistry) beanFactory;}if (beanDefinitionRegistry == null) {throw new RuntimeException("listableBeanFactory is null.");}?上面的示例代码中,ListableBeanFactory和BeanDefinitionRegistry两个接口单独说明一下
for (String name : listableBeanFactory.getBeanDefinitionNames()) { // 对每一个bean的name,从BeanDefinitionRegistry中拿到BeanDefinition信息BeanDefinition bd = beanDefinitionRegistry.getBeanDefinition(name);System.out.println(name); // 判断是否是抽象的beanif (bd.isAbstract()) {System.out.println("\tIt is a abstract bean."); continue;}IBean bean = (IBean) beanFactory.getBean(name);System.out.print("\t");bean.doItNow();}