IoC与DI

IoC 控制反转
  

public class PersonServiceBean{
    private PersonDAO personDAO = new PersonDAO();
    public void save(Person person){
    personDAO.save(person);
    }
}

如上代码所示,PersonDAOBean是在应用内部创建及维护的。所谓的控制反转(IoC)就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。控制权可以理解对应用程序运行所需要的Bean的管理(创建和销毁),若将上述代码看成一个应用,那么这个应用运行需要的Bean就是PersonDAOBean。

DI 依赖注入

当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean类可以改成如下:

public class PersonServiceBean{
    private PersonDAO personDAO;
    //通过构造器参数,让容器把创建好的依赖对象
    //注入进PersonServiceBean,也可以使用setter注入。
    public PersonServiceBean(PersonDAO personDAO){
        this.personDAO = personDAO;
    }
    public void save(Person person){
        personDAO.save(person);
    }
}

依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中。

  

时间: 2024-10-03 22:47:24

IoC与DI的相关文章

IOC和DI到底是什么?

 在学习Spring框架的时候,我们总是能见到IOC这个单词,也时常听到DI这个词,那么他们分别是什么意思呢?接下来就讲讲个人对于这两个概念的理解  一.IOC和DI概念 IOC(控制反转):全称为:Inverse of Control.从字面上理解就是控制反转了,将对在自身对象中的一个内置对象的控制反转,反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建. DI(依赖注入):全称为Dependency Injection,意思自身对象中的内置对象是通

对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解

.概述 所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体.简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合,并由此引申出IoC.DI以及Ioc容器等概念. 2.意图 面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本. 面向对象的开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节

spring.net中的IoC、DI和MVC

概述 spring.net是一个开源的业务层的框架,功能非常的强大,归结一下有3个功能:面向切面编程:IoC和DI:提供综合型的框架支持,本片博客主要说一下IoC和DI,和其提供的对MVC框架的支持. IoC和DI IoC,英文全称Inversion of Control,控制反转:DI,英文全称Dependency Injection,依赖注入.简而言之,IoC就是创建对象,DI就是创建对象的时候,进行初始化. IoC和DI就相当于我们通常写的抽象工厂+反射,只不过比抽象工厂的功能强大,但是其

深入理解DIP、IoC、DI以及IoC容器

摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学习这些概念,并理清他们之间微妙的关系. 目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(DI) IoC容器 总结 前言 对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些"高大上"的名词,理解起来也并不是那么的

IoC和DI

一.IOC和DI概念 IOC(控制反转):全称为:Inverse of Control.从字面上理解就是控制反转了,将对在自身对象中的一个内置对象的控制反转,反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建. DI(依赖注入):全称为Dependency Injection,意思自身对象中的内置对象是通过注入的方式进行创建. 那么IOC和DI这两者又是什么关系呢? IOC就是一种软件设计思想,DI是这种软件设计思想的一个实现.而Spring中的核心机

Spring控制反转与依赖注入(IOC、DI)

IOC: 反转控制   Inverse Of Control DI:依赖注入 Dependency Injection 目的:完成程序的解耦合 解释:在应用系统的开发过程中,有spring负责对象的创建,对象依赖关系的组装,对象属性的初始化,程序员只需要在程序接收spring创建的对象即可. Object obj= new Object(); IOC :  Object obj;  等着接收spring容器创建好的对象,在程序中将对象的创建的权限交出,反转到spring容器中. DI:  某个对

Spring框架中的IOC和DI的区别

上次面试被问到IOC和DI的区别时,没怎么在意,昨天又被问到,感觉有点可惜.今晚总算抽点时间,查看了spring官方文档.发现,IoC更像是一种思想,DI是一种行为.为了降低程序的耦合度,利用spring将对象依赖的对象进行注入的过程中,发生了什么呢?发生了控制权的反转.而spring官方文档中,也是将Dependency Injection放在了IoC Container这一章的子节中. spring官方文档:http://docs.spring.io/spring/docs/3.2.13.R

不可不知的DIP、IoC、DI以及IoC容器

面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念. 本文首先用实例阐述四个概念,并且给出Java版本的示例代码. 依赖倒置原则(DIP) 依赖倒置是一种软件架构设计的原则,.依赖倒置原则,它转换了依赖,高层模块不依赖于低层模块的实现,而低层模块依赖于高层模块定义的接口.通俗的讲,就是高层模块定义接口,低层模块负责实现. 如何理解呢?举例说明吧. 先看生活中的一个例子. 图1

DIP原则、IoC以及DI

DIP原则.IoC以及DI 一.DIP原则 高层模块不应该依赖于底层模块,二者都应该依赖于抽象. 抽象不应该依赖于细节,细节应该依赖于抽象. 该原则理解起来稍微有点抽象,我们可以将该原则通俗的理解为:"依赖于抽象". 该规则告诉我们,程序中所有的依赖关系都应该终止于抽象类或者接口,从而达到松耦合的目的.因为我们在应用程序中编写的大多数具体类都是不稳定的.我们不想直接依赖于这些不稳定的具体类.通过把它们隐藏在抽象和接口的后面,可以隔离它们的不稳定性. 举个例子 一个Button对象会触发

关于IOC和DI的理解

IOC:Inversion of Control 控制反转 DI:Dependency Injection 依赖注入 控制反转,从字面意思来看,就是控制权又被动变主动,最后又变回被动. 举个例子: 你的主管要求你做一件事情,这个时候就存在这么几个过程, 主管命令你做事情(这个时候主动权在主管,你是被动的) 你接到命令做事情(这个时候主题是你,你是主动的,控制权在你手里) 你完成事情(这个时候主题依然是你,控制权在你手里) 报告主管做完事情(主动权又叫交到主管手里了) 上面的整个过程就完成了一次I