【spring源码-1】beanFactory vs FactoryBean vs ApplicationContext

文章要点:

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依赖注入过程

 

 DefaultBeanDefinitionDocumentReader类:

 

 

        BeanDefinitionReaderUtils类
 

 

 

 


 二、ApplicationContext -- 高级容器(推荐)

 

转载于:https://www.cnblogs.com/clarino/p/10841876.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值