标签:actor cat ons exce classpath map ebe context 核心
将大体流程解析了一边,具体可以看源代码一个方法一个方法的跟下
XmlBeanFactory
的功能是建立在DefaultListableBeanFactory
这个基本容器的基础上的,并在这个基本容器的基础上实行了其他诸如XML读取的附加功能。
DefaultListableBeanFactory
是BeanFactory
的一个默认实现类。
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
/**
* Resource是Spring中对与外部资源的抽象,最常见的是对文件的抽象,特别是XML文件。
* 而且Resource里面通常保存了Spring使用者的Bean定义
* 比如applicationContext.xml在被加载时,就会被抽象为Resource来处理。
*/
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}
}
简单示例:
public class MySimpleBeanFactory {
public static void main(String[] args) {
ClassPathResource resource = new ClassPathResource("META-INF/beans.xml");
BeanFactory beanFactory = new XmlBeanFactory(resource);
User user = beanFactory.getBean("user1", User.class);
System.out.println(user.getName()+" : "+user.getAge());
}
}
创建容器的步骤:
Resource
BeanFactory
,例如:XmlBeanFactory
BeanDefinition
读取器,例如:XmlBeanDefinitionReader
->DefaultBeanDefinitionDocumentReader
->BeanDefinitionParserDelegate
BeanDefinition
后注册到DefaultListableBeanFactory
中:// 最后BeanDefinition就是放到这个map里的
Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(256);
以后会慢慢完善。
标签:actor cat ons exce classpath map ebe context 核心
原文地址:https://www.cnblogs.com/liycode/p/9356384.html