Spring IOC为什么是必要的


个人理解,观点可能片面,欢迎在评论区喷我,这样我才能成长

白话理解为什么需要IOC

情景假设:
1.假如甲生产笔,乙生产笔帽,要想生产一只完整的笔,甲肯定需要笔帽啊。于是甲便派一个人去甲那里取笔帽,但是不知道什么原因乙搬家了,那甲这次是不是就要失败而归了。第一次搬家,第二次搬家…
2.于是甲很烦啊,每次去乙住的地方,乙都换位置了。于是协商了一下,你以后把生产的笔帽给我放到A城哪个仓库,以后的用的时候直接去仓库取

第一种情况发生的原因就是甲过分依赖乙,所以才会产生一些问题
第二种情况解决了问题,但是看着是不是有点麻烦,毕竟鱼与熊掌不可兼得。在数据结构中,就经常有牺牲空间换取时间!
情景1
情景2

代码理解为什么需要IOC

当不使用ioc时,使用传统new的方式

dao层

package com.kang;

public class Dao {
    private String ip;

    public Dao(String ip) {
        this.ip = ip;
    }

    public String selectUser() {
        return "Users in ip:" + this.ip;
    }
}

service层

package com.kang;

public class Service {
    public String selectUser() {
        Dao dao = new Dao("127.0.0.1");
        return dao.selectUser();
    }
}

接下来试想一个问题:
1.如果数据库ip地址变了怎么办,那我是不是就要修改 Dao dao = new Dao(“127.0.0.1”)了
2.如果service又增加了一个dao2,那我是不是就要添加一个Dao dao2 = new Dao(ip)了
等等…

这样带来的问题是不是就很多了,究其原因,就是对象之间的依赖太强了,所以我们需要解耦合,换句话就是说依赖注入,控制反转。我需要的对象不管你变没变,需要的时候我就去仓库(工厂)拿,这样的话是不是就好多了,是不是就能理解我们为什么需要spring ioc了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值