zoukankan      html  css  js  c++  java
  • 【颗粒归仓】--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时。


  • 相关阅读:
    js中的鼠标滚轮事件
    js图形打印
    抽奖
    GJM : Unity3D HIAR -【 快速入门 】 五、导出 Android 工程、应用
    GJM : Unity3D HIAR -【 快速入门 】 四、创建 Hello World
    GJM : Unity3D HIAR -【 快速入门 】 三、导入 SDK
    GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境
    GJM : Unity3D HIAR -【 快速入门 】 一、简介
    GJM :Unity集成Leap Motion
    GJM : Unity3D 高通Vuforia SDK AR 开发
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253619.html
Copyright © 2011-2022 走看看