IOC 容器的初始化

IoC 全称为 Inversion of Control,翻译为 “控制反转”

  • 它还有一个别名为 DI(Dependency Injection),即依赖注入
  • 所谓 IOC ,就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系

IOC Service Provider 为被注入对象提供被依赖对象也有如下几种方式:构造方法注入、stter方法注入、接口注入

  • 构造器注入,顾名思义就是被注入的对象通过在其构造方法中声明依赖对象的参数列表,让外部知道它需要哪些依赖对象
  • 对于 JavaBean 对象而言,我们一般都是通过 getter 和 setter 方法来访问和设置对象的属性
  • 接口方式注入显得比较霸道,因为它需要被依赖的对象实现不必要的接口,带有侵入性。一般都不推荐这种方式

b4777821db542f2c722736f8e1325070bee.jpg

Resource体系

  • 对资源的抽象,它的每一个实现类都代表了一种资源的访问策略,如ClasspathResource 、 URLResource ,FileSystemResource 等

330feec2cdeaf8481635db038d3990c1549.jpg

ResourceLoader 

c85bfe7609d0a40f0106151753cb3a37d08.jpg

BeanFactory 

  • BeanFactory 是一个非常纯粹的 bean 容器,它是 IOC 必备的数据结构
  • 其中 BeanDefinition 是她的基本结构
  • 它内部维护着一个 BeanDefinition map
  • 并可根据 BeanDefinition 的描述进行 bean 的创建和管理
  • BeanFacoty 有三个直接子类 ListableBeanFactoryHierarchicalBeanFactory 和 AutowireCapableBeanFactory
  • DefaultListableBeanFactory 为最终默认实现,它实现了所有接口

a7b512fd3a40e951af10bd0d6db62413068.jpg

Beandefinition 

  • 用来描述 Spring 中的 Bean 对象
  • 各个Bean 之间依赖关系

7fd2360264e43fd6f2295531ce613e3715c.jpg

BeandefinitionReader

  • 作用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构:BeanDefinition

c226e3e9bfbdcf01d939f040a885d5baf14.jpg

ApplicationContext

  • 大名鼎鼎的 Spring 容器,它叫做应用上下文
  • 继承 BeanFactory,所以它是 BeanFactory 的扩展升级版

 ApplicationContext 的结构就决定了它与 BeanFactory 的不同,其主要区别有:

  • 继承 MessageSource,提供国际化的标准访问策略。
  • 继承 ApplicationEventPublisher ,提供强大的事件机制。
  • 扩展 ResourceLoader,可以用来加载多个 Resource,可以灵活访问不同的资源。
  • 对 Web 应用的支持

0526b4115f77f04de251909065b05600f1d.jpg

IOC 容器的初始化

  • 包括BeanDefinition的Resources 定位,载入和注册这三个基本的过程
  • 以ApplicationContext 为例,继承体系如下:

942af31fca4f0cad1f37b6dc74468ed9964.jpg

  • 流程泳道图:

6dad3581bf8a99e1de5016c8c7046c7cd91.jpg

转载于:https://my.oschina.net/u/3847203/blog/2248780

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值