简单理解IOC和DI

(一)IOC(Inversion of Control):控制反转
Spring的IOC容器获得控制权。
(1)在类内部不为对象a赋值

public class A {
    public void print(){
        System.out.println("hello");
    }
}
public class B {
    private A a;

    public void print(){
        a.print();//a为null,调用该方法会有空指针异常
        //因此必须为属性a赋值,那么怎么赋值呢?
    }
}

(2)在类内部为对象a赋值

public class B {
    private A a=new A();//由类本身控制对象a,控制权在自己手上

    public void print(){
        a.print();
    }
}

(3)在类外部为对象a赋值(需要set方法)

public class B {
    private A a;

    public void setA(A a) {
        this.a = a;
    }

    public void print(){
        a.print();
    }
}
public class Main {
    public static void main(String[] args) {
        A a=new A();
        B b=new B();
        b.setA(a);//在类外部为属性a注入值,控制权被交出来了
        b.print();
    }
}

(4)在Spring框架中,Spring的IOC容器获取控制权,即控制权反转给IOC容器了。
由IOC容器调用set方法为对象属性注入值。
这里写图片描述
(5)IOC容器为依赖对象注值有2种方式:调用set方法;注解注入。后续讲解
(二)DI(Dependency Injection):依赖注入,DI是IOC的另一种表述
(1)DI是IOC的另一种表述,IOC和DI说明的是同一件事物。
(2)容器为我注入依赖对象,而不是我自己去注入依赖对象。即由IOC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。
(3)我们依赖容器获取资源,容器把资源给我们。
(4)相对于IOC而言,DI的表述更容易被理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值