IOC

概念:

1、复杂系统分解成互相合作的对象,接着“第三方”解耦各层间的依赖关系,由IOC(Inversion of Control)容器【即Dependency Injection依赖注入】负责对象的创建和维护,容器在运行时动态将依赖对象注入到组件中;


2、即是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定;

让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。


3、把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言的的反射编程,根据配置文件中给出的类名生成相应的对象。

类型:

构造函数注入

sprig支持

通过调用类的构造函数,将接口实现类通过构造函数变量传入

被注入对象在其构造方法中声明依赖对象的参数,IoC检查被注入对象的构造方法,取得它所需要的依赖对象列表,进而为其注入相应的对象,IoC负责被注入对象的构造或生命周期

pulic class IClass{
  private One o;
  private Two t;
  public iClass(One o,Two t){
     this.o=o;
     this.t=t;
  }
}
 
 
 
 
 

属性注入

spring支持

通过Setter方法完成调用类所需依赖的注入,使用时调用、更加灵活方便;

 public class A  
{  
     private B b;  
     private C c;  
  
 public void setb(B b) {  
	this.b = b;  
 }  
 
 public void setc(C c) {  
	this.c = c;  
 }  
} 
通过调用set方法为A对象注入所依赖的对象
public class DMove {  

   public void direct(){
   
       B b = new bOne();  
       A a = new A();  
  
       //①调用属性Setter方法注入  
       a.setb(b);   
       a.*();  
   }  
   
} 

接口注入

将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法

通过接口注入需要额外声明一个接口,增加了类的数目,而且它的效果和属性注入并无本质区别,因此我们不提倡采用这种方式

通过容器完成依赖关系的注入

通过配置文件或注解描述类和类之间的依赖关系,自动完成类的初始化和依赖注入的工作。(反射)


控制反转:

当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方,而不是A主动去创建、维护B


http://www.cnblogs.com/ttrjba/p/3511935.html

http://blog.csdn.net/xz0125pr/article/details/49129659

http://stamen.iteye.com/blog/1489223/   通俗易懂的文章又一篇

http://blog.csdn.net/xiaoxing1521025/article/details/8846022

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值