Spring最简单IOC容器实现

不积跬步,无以至千里。

IOC

控制反转并不是依赖注入,但依赖注入便是控制反转。反转的地方便是创建对象的权力被转移了,权力便代表责任,也称责任被反转。

在没有使用spring framwork的时候,创建对象需要我们亲力亲为,包括创建对象所依赖的基本数据(包括其他对象)。

  1. 没有控制反转的时候

    我想喝奶茶,必须自己去购买材料,自己制作,然后才能享受奶茶。

  2. 控制反转后

    我想喝奶茶,只需要到奶茶店告诉店员,然后我就能喝上香甜的奶茶。

由此可见,第二种方式,确实比第一种方式省力省时。

spring中最简单的ioc容器

几个重要的类或者接口

  1. org.springframework.beans.factory.BeanFactory
    1. 定义了容器的规范,是一个接口,没有具体的实现。
    2. 定义了容器最基本的功能。
  2. org.springframework.beans.factory.config.BeanDefinition

    是容器中bean对象依赖关系的数据抽象,也就是容器实现依赖反转功能的数据结构。

  3. org.springframework.beans.factory.xml.XmlBeanFactory

    是容器最底层的实现,通过读取xml配置文件,对对象进行管理。

  4. org.springframework.beans.factory.support.DefaultListableBeanFactory

    这个类其实就是最简单容器默认实现,XmlBeanFactory就是在这个基础上再次进行了封装。

实现机制

  1. 定义一个最基本的功能(由BeanFactory定义)。
  2. 在最基本的功能上添加一些新功能(其余的接口继承BeanFactory接口)
  3. 创建具体的实现类,其中默认的最基本的容器实现便是DefaultListableBeanFactory,其次在这个容器上进行了封装的XmlBeanFactory(目前已经不被推荐)。
  4. 创建一个数据结构,用于抽象对象间的依赖关系。(BeanDefinition)
  5. 需要一个资源读取类。(BeanDefinitionReader)

编程式的使用容器,理解容器

  1. 创建IOC配置文件的抽象资源,即读取对应的xml文件,并创建一个资源对象。
  2. 创建一个BeanFactory对象,用于管理bean。
  3. 把抽象资源载入BeanDefinition的读取器BeanDefinitionReader。
  4. 在BeanDefinitionReader的一个回调配置中,把BeanDefinition传给BeanFactory。
  5. 总结: 从定义好的配置文件地址中读取配置,通过BeanDefinitionReader解析配置,然后将BeanDefinition传给BeanFactory,于是最终的IOC就建立起来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值