请简述什么是spring的ioc和di_Spring中IOC与DI的的区别

依赖注入的前提:

有IOC的环境,也就是将必须对象的创建权交给了Spring.

DI 介绍

Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去.

IOC与DI的的区别:

IOC:  控制反转,将类的对象的创建交给Spring类管理创建.

DI:    依赖注入,将类里面的属性在创建类的过程中给属性赋值.

DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成.

这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变

举一个栗子:

写个接口,说咱们购物去~

public interface IShopping {

void drive();

String Money();

}

在实现它两下:有钱人购物,没钱人购物     - -!这栗子举的

public class RichMan implements IShopping{

@Override

public void drive() {

System.out.println("Drive By Benz");

}

@Override

public String Money() {

System.out.println("lot`s of money");

return "10000";

}

}

public class PoorGuy implements IShopping{

@Override

public void drive() {

System.out.println("take a walk!");

}

@Override

public String Money() {

System.out.println("nothing");

return "1";

}

}

然后我们出去玩,顺便shopping一下吧~

public class Play {

private IShopping shoppingSomething;

//使用构造方法,将实现传入

public Play(IShopping shoppingSomething){

this.shoppingSomething = shoppingSomething;

}

public void withgirlFriend(){

shoppingSomething.drive();

shoppingSomething.Money();

}

}

将想用的实现方式,用容器注入进来,这里就模拟下下怎么注入:

public class Containner {

public Play getShopping(){

return new Play(new RichMan());

}

}

测试一下:

public static void main(String[] args) {

Containner containner = new Containner();

Play play = containner.getShopping();

play.withgirlFriend();

}

结果是:

Drive By Benz

lot`s of money

如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值