文章要点:
1、BeanFactory 和 ApplicationContext 的类继承关系
2、常见面试题
刷新纪录:
2019-6-13 补充BeanFactory的类图
一、BeanFactory (interface) 基础容器
public interface BeanFactory {
接口实现及继承关系:
1、最终的默认实现是 DefaultListableBeanFactory,实现了所有的接口;
2、定义这么多层级的接口和类目的:每个接口都有它使用的场合,为了区分在spring内部对象的传递和转换过程中,对对象的数据访问所做的限制。
3、ListableBeanFactory表示这些bean是可列表的;HierarchicalBeanFactory表示这些bean是有继承关系的(每个bean可能有父bean)。
4、AutowireCapableBeanFactory定义Bean的自动装配规则
XmlBeanFactory
使用方法:XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("Beans.xml"));
利用框架提供的 XmlBeanFactory() API 去生成工厂 bean 以及利用 ClassPathResource() API 去加载在路径 CLASSPATH 下可用的 bean 配置文件。
源码:从源码类的@Deprecated就可以看出不推荐使用
通过实例化时会传入一个Resource对象(从上述)
BeanDefinition: 对IOC中对象依赖关系的抽象
XmlBeanDefinitionReader: 从类名看功能就是会读取XML格式的bean定义文件,此处的doLoadBeanDefinitions最终跳转执行如下红框方法:
步骤1:通过 DocumentBuilderFactory方式读取XML文件
步骤2:注册bean定义: Bean定义保存到HashMap中,这里并不涉及Bean依赖注入过程
![](https://i-blog.csdnimg.cn/blog_migrate/3de660697c6518dbc39d2ebdb070a11d.png)
二、ApplicationContext -- 高级容器(推荐)