Spring食行记之IOC&DI

【概述】

1.IOC(Inversion of Control):

即“反转控制”,不是什么技术,而是一种设计思想。其思想是反转资源获取的方向

传统的资源查找方式要求组件向容器发起请求查找资源。作为回应,容器适时地返回资源。

而在应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被称为查找的被动形式。

所谓IOC其实就是打破原有的由类自身创建对象改变为由容器来创建对象。IOC主要包含反转(角色的反转)和控制(对象的创建)两个部分。

【猩生柯北举栗子:就好像是以前买菜你需要亲自提着菜篮子去菜市场买菜,而现在用了IOC后就不用亲自去菜市场了了,你只需要将菜篮子放在家门口,菜就会自己到你的篮子里面。】

2.DI(Dependency Injection)--IOC的另一种表述方式:即组件以一些预定义好的方式(例如:setter方法)接受来自如容器的资源注入。相对于IOC而言,这种表述更加直接。

【示例】

class A{}

class B{

       private A a;

       public void setA(A a){

                 this.a = a;

      }

}

需求:从容器中获取B对象,并使B对象的a属性被赋值为容器中A对象的引用。

传统方式:

                 

  A a = getA();  //获取A

  B b = getB();  //获取B

  b.setA(a);   //建立关联关系

用IOC容器:

 B b = getB();

说明:用IOC容器后,容器通过setter方法自动把A对象的引用赋给了B对象的a属性。

IOC发展:分离接口和实现(原始社会),工厂设计模式(封建社会),反转控制(按需分配)。

猜你喜欢

转载自www.cnblogs.com/zhzcode/p/9579359.html