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

原创 2015年11月19日 00:04:15

控制反转(Inversion of Control ,Ioc) 

      我认为所谓反转控制(IOC),就是在编程过程中开发人员常说的“实现必须依赖抽象,而不是抽象以来实现”,这就是从变现形式上对反转控制的一种解释。从工作模式上说,无需在代码中创建被调用者,而是交给外部容器去进行初始化,原来初始化被调用者的过程掌握在自己手中,而现在却掌握在外部容器里。

依赖注入(Dependency Injection)

      所谓依赖注入的过程就是初始化的过程,这是spring的容器功能,在实现类中不需要对被调用者初始化的实现,我在开发中常用的方法有setter注入(setter injection)、构造注入(constructor injection),此外还有接口注入(interface injection)。

1  、 setter注入(setter injection)

            setter注入就是在接受注入的类中添加被调用者的setter方法。然后在配置文件中通过添加setter方法实现注入:

.....

public class UserService{

    private userDao;

   .......

   public void setUserDao( UserDao userDao){

           this.userDao=userDao;

     }

}

通过Spring.xml的property标签来获取setter方法并把userDao注入给他:

<bean  id = "us" class="com.hp.service.UserService">

<property name="userDao" ref="ud">

<bean>


2、构造注入(constructor injection)

   构造注入就是在接收注入的类中定义一个构造方法,把被调用对象作为参数传入的一种方式:

.....

public class UserService{

    private userDao;

    public UserService(UserDao userDao){

         super();

         this.userDao=userDao;

   }

}


通过Spring.xml的constructor-arg标签来把userDao注入给他:

<bean  id = "us" class="com.hp.service.UserService">

<constructor-arg><ref bean="ud"/> </constructor-arg>

<bean>

3、接口注入(interface injection)

   接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入,开发中较少用到。


这样通过ioc,可以利用setter 、constructor来实现自己的对象与对象之间的依赖关系实现DI,减少了程序的复写,降低组件之间的耦合度,实现软件各层之间的解耦。

版权声明:本文为博主原创文章,未经博主允许不得转载。

php设计模式-Ioc(控制反转)和Di(依赖注入)

http://www.thinkphp.cn/topic/12180.html
  • w786572258
  • w786572258
  • 2016年09月24日 15:02
  • 2052

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

1.控制反转(Inversion of Control)与依赖注入(Dependency Injection) 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接...
  • hy6688_
  • hy6688_
  • 2014年10月31日 18:46
  • 9274

轻松学,浅析依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)

写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来解释依赖注入这个概念。后来想一下,这些在面向对象开发过程中与依赖相关的诸多术语和概念实际情况下非常的抽象,因此独立成文...
  • briblue
  • briblue
  • 2017年07月13日 22:04
  • 7327

【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(一):用到“反射”编程

1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 ...
  • cangchen
  • cangchen
  • 2015年04月08日 22:25
  • 1863

关于Spring IOC (DI-依赖注入)你需要知道的一切

【版权申明】未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/54561302 出自...
  • javazejian
  • javazejian
  • 2017年01月19日 16:46
  • 22149

控制反转(IoC)与依赖注入(DI)——自己的理解

昨天的验收,师姐提到了这个词控制反转与依赖注入  ,在我们的七层抽象工厂的模式中似乎用到了这个知识,于是乎自己动手查查到底是什么东西,发现了意想不到的东西,特此来分享一下。 一、概念(百度) ...
  • tr1912
  • tr1912
  • 2016年05月03日 15:03
  • 1369

谈谈我对Spring IOC与DI的理解

IOC是一种叫做“控制反转”的设计思想。1、较浅的层次——从名字上解析 “控制”就是指对 对象的创建、维护、销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个...
  • zhangliangzi
  • zhangliangzi
  • 2016年06月01日 00:23
  • 7845

Java面试-Spring IOC(控制反转)和DI(依赖注入)

IOCIoc(Inversion of Control)翻译成中文就是“控制反转”,一个比较晦涩的词语。如果要真正理解这个词语,必须要用过Spring框架才行,因为Spring开启了一种新的编程方式。...
  • u010902721
  • u010902721
  • 2016年10月04日 23:18
  • 1406

spring四种依赖注入方式 ( 依赖注入DI+ 控制反转IOC的原理)

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程...
  • baoendemao
  • baoendemao
  • 2014年04月28日 13:06
  • 1727

控制反转(IOC)和依赖注入(DI)的区别

IOC   inversion of control  控制反转 DI   Dependency Injection  依赖注入 要理解这两个概念,首先要搞清楚以下几个问题: 参与者都有谁?依赖:...
  • doris_crazy
  • doris_crazy
  • 2014年01月16日 11:23
  • 26106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring反转控制(IOC)和依赖注入(DI)
举报原因:
原因补充:

(最多只允许输入30个字)