Spring-IOC

IOC 简介

IOC (Inversion Of Control),译为“控制反转”。
它不是一门技术,它是一个设计思想,一个重要的面向对象的编程法则,能够指导我们如何设计出 松耦合、优良的程序。

  • “IOC” 是一种设计思想
  • “IOC” 是为了降低程序的耦合度,提高程序的拓展能力
  • 控制反转,反转的是什么?
    • 将对象的创建权力交出去,交给第三方容器负责。
    • 将对象与对象之间的关系的维护权交出去,交给第三方容器管理。
  • 控制反转 这种思想通过DI(Dependency Injection)依赖注入 实现。

DI 依赖注入 简介

DI 依赖注入 实现了 IOC 控制反转的思想。

  • 指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
  • 常见的依赖注入方式
    • setter 注入
    • 构造 注入

结论:IOC 是一种控制反转的设计思想,而 DI 是实现 IOC 控制反转 设计思想的一种具体方式。

Bean管理:Bean 对象的创建,以及Bean对象中属性的赋值(Bean对象之间的关系维护)

Spring IOC 容器 简介

Spring 通过 IOC 容器来管理所有Java对象的实例化和初始化,控制对象和对象之间的依赖关系。

我们将由IOC容器管理的Java对象称为Spring Bean,它与使用关键字new创建的Java对象没有任何区别

Spring IOC 容器 相关工作流程

首先,IOC容器中,放置的是我们业务场景所需要的Bean实例对象。
一般来说,我们可以通过配置,规定我们需要哪些Bean对象,配置Bean的方式由多种:比如 XML、注解 等等…

  1. 首先,Spring 会通过 BeanDefinitionReader 这个抽象类,将配置文件中的Bean信息进行读取,将每个Bean的定义信息,实例化成对应的BeanDefinition
  2. IOC容器会根据这些BeanDefinition,实例化相应的Bean对象,实例化的方式是BeanFactory工厂+反射,此时的Bean对象并没有经过初始化,并不能算一个完全体。
  3. IOC容器会初始化这个已经被实例化的Bean对象,这个过程会进行依赖注入,初始化完成,Bean对象成为一个完全体。
  4. IOC容器用类似与 Map 的数据结构 将Bean 对象进行存储。

Spring-IOC_第1张图片

IOC 容器在Spring 中的实现

  1. BeanFactory:这是IOC容器的基本实现,是Spring内部使用的接口,面向Spring本身,不提供给开发人员使用。
  2. ApplicationContext:BeanFactory的子接口,不仅拥有BeanFactory的所有功能,还提供了更多的高级特性,面向Spring的使用者,几乎所有场合都使用AppliacationContext而不是底层的BeanFactory。
  3. ApplicationContext的主要实现类
    Spring-IOC_第2张图片
    Spring-IOC_第3张图片

你可能感兴趣的:(Spring,spring,java,后端)