【颗粒归仓】--spring IoC容器

  IoC容器是Spring技术的一个核心,Spring的很多实现技术都是交给IoC容器进行管理和实现的。所以,作为一个资深的java工程师,熟悉IoC容器的实现原理和过程是必备的技能。


  基本概念:

    就是具有依赖注入功能的容器,是可以创建对象的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。这个建立过程就是我们常说的控制反转,将对象的创建反转给容器进行实现。

  主要类型:

    IoC容器有两个主要的容器系列:一种是实现了BeanFactory接口的简单容器系列,实现了容器的基本功能;另一种是ApplicationContext应用上下文,是容器的高级形态。

    ApplicationContext在BeanFactory的基础之上添加了一些附加功能,使得ApplicationContext具备如下特性:

     1、支持不同的信息源,ApplicationContext扩展了MessageSource接口,可以支持国际化的体现
     2、访问资源:体现在对ResourceLoader和Resource的支持上,可以从不同地方得到Bean定义资源
     3、支持应用事件:继承了ApplicationEventPublisher,在上下文中引入了事件机制。
     4、提供了附加功能,与BeanFactory相比,对它的使用是面向框架的风格


  实现过程:

    IoC的实现过程可以分为两大部分,第一是容器初始化,第二部分是依赖注入。

    初始化:由refresh方法启动,标志着IoC容器正式启动。包括BeanDefinition的Resource定位、载入和注册三个基本过程。

    说到这,我们首先要明确BeanDefinition的概念,就是对依赖反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕BeanDefinition的处理来完成的

       1、Resource定位,指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口来完成。其实就是容器寻找要加载的数据。例如,常用的加载资源文件的方法,使用如下代码:      

Resource resource = new ClassPathResource("beanFactoryTest.xml");
       2、BeanDefinition的载入,把用户定义好的Bean表示成IoC容器内部的数据结构,其实就是BeanDefinition。

       3、将BeanDefinition注册到IoC容器,需要使用BeanDefinitionRegistry接口来实现。在IoC容器内部将Beandefinition注入到一个HashMap中,然后从该HashMap中取所需的数据。

    依赖注入:

       经过初始化完成之后,IoC容器中已经创建好BeanDefinition的数据映射,接下来就是依赖注入。依赖注入发生在用户第一次从容器中去Bean时触发,即用户在使用getBean方法获取Bean时。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值