1、 验证过程 代码地址
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/spring源码学习/spring-source-learn/spring-01
1.1、验证代码package com.example.spring01.test;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Test1 {
public static void main(String[] args) {
System.out.println("------------BeanDefinition的Resource定位----------");
// 根据Xml配置文件创建Resource资源对象,该对象中包含了BeanDefinition的信息
ClassPathResource resource = new ClassPathResource("Test1.xml");
// 创建XmlBeanFactory
XmlBeanFactory beanFactory = new XmlBeanFactory(resource);
System.out.println("------------BeanDefinition的载入----------");
// 创建XmlBeanDefinitionReader读取器,用于载入BeanDefinition。
// 之所以需要beanFactory作为参数,是因为会将读取的信息回调配置给factory
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
System.out.println("------------BeanDefinition的注册----------");
// reader执行载入BeanDefinition的方法,最后会完成Bean的载入和注册。
// 完成后Bean就成功的放置到IOC容器当中,以后我们就可以从中取得Bean来使用
reader.loadBeanDefinitions(resource);
System.out.println("------------当前注册的bean----------");
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println("bean 名称:" + beanDefinitionName);
}
}
}
1.2、测试结果
2、 XmlBeanFactory源码
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}
}
3、 XmlBeanFactory 继承关系图



