美文网首页我爱编程
什么是IoC和DI?DI是如何实现的?

什么是IoC和DI?DI是如何实现的?

作者: 唐怀瑟_ | 来源:发表于2018-07-25 21:40 被阅读559次

IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的”控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC体现了好莱坞原则 – “Don’t call me, we will call you”。依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

举个例子:一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统。如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。

依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。

相关文章

  • JAVA框架面试题整理之—第二篇

    146、什么是IoC和DI?DI是如何实现的? 答:IoC叫控制反转,是Inversion of Control的...

  • 什么是IoC和DI?DI是如何实现的?

    IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection...

  • 控制反转

    什么是控制反转(IOC),什么是依赖注入(DI)?问题:什么是控制反转(IOC),什么是依赖注入(DI)?IOC:...

  • Spring IOC容器

    由于Spring是采用依赖注入(DI)的方式来实现IOC,所以本文将IOC和依赖注入(DI)等同看待,主要讨论依赖...

  • .Net Core随笔(.Net Core DI依赖注入)

    首先了解一下DI和IOC,首先两者并不是一个概念,虽说差不多,DI是IOC的一种具体实现:DI(Dependenc...

  • Spring IOC的核心机制:实例化与注入

    上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spr...

  • Spring面试

    spring的IOC和AOP分别是基于什么实现的1> IOC怎么实现的? 我的理解是IoC是一种理念,DI则是它的...

  • Spring IOC浅谈

    1、什么是IOC? 1.1 DI和IOC 依赖注入DI和控制反转IOC其实都是同一个东西,只是从不同的方面去形象地...

  • 大数据从0出发 — IOC 和 DI

    篇三 IOC、DI学习笔记 1.IOC 和 DI 在现在通常说的是一个意思,依赖注入,因为他们所实现的都是一个...

  • spring 那点事

    Spring核心功能 DI(IOC) 何谓DI(IOC) DI(依赖注入)是spring的核心功能之一。Depen...

网友评论

    本文标题:什么是IoC和DI?DI是如何实现的?

    本文链接:https://www.haomeiwen.com/subject/tkimmftx.html