spring源码分析(一)—IOC的体系和设计

IOC容器概述

IOC容器是实现控制反转的载体,它可以在对象生成或初始化时直接将数据注入对象,也可以通过对象引用注入到对象数据域中,总之就是将对象的创建,引用的管理交给容器,降低系统设计的复杂性和耦合性。

IOC容器的设计和实现

在spring IOC容器系列中,有2个主要的容器系列;一个是实现BeanFactory接口,另一个是ApplicationContext应用上下文。

IOC容器为开发者管理对象间的依赖对象关系提供服务,至于选择什么样的容器取决于用户的需要,spring提供了各式各样的IOC容器供给用户选择。

spring 通过BeanDefinition来管理基于spring应用中的各种对象和它们之间的依赖关系,定义bean

  • IOC容器的设计
    IOC接口的设计图
    这里写图片描述

BeanFactory接口设计了getBean()方法,通过此方法可以获取到IOC容器管理的Bean,Bean通过指定名字来索引

  • BeanFactory容器的设计原理

    BeanFactory提供了IOC容器使用的规范,则以XmlBeanFactory为例,来说明IOC容器的设计原理:
    这里写图片描述

    从XmlBeanFactory的实现入手分析,来看看IOC容器是怎么实现的。

    - XmlBeanFactory继承DefaultListableBeanFactory
    
    - 由Resource类指定BeanDefinition的信息来源
    
    - 创建一个载入BeanDefinition的读取器
    
    - 从定义好的资源位置载入配置信息,具体解析过程由XmlBeanDefinitionReader来完成
    

IOC容器的初始化

IOC容器的初始化由refresh()方法启动,具体启动过程包括:Resource定位,载入和注册。

  • Resource定位:具体指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口
  • BeanDefinition载入:这个载入过程是指把用户定义好的Bean表示成IOC容器内部的数据结构。
  • 注册BeanDefinition:通过BeanDefinitonRegistry接口来实现,是把载入过程解析得到的BeanDefinition向IOC容器注册

IOC容器初始化过程,一般不包含Bean依赖注入的实现,Bean定义的载入过程和依赖注入是两个独立的过程,依赖注入一般发生在首次通过getBean()获取Bean的时候。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值