Spring IOC为什么是必要的
个人理解,观点可能片面,欢迎在评论区喷我,这样我才能成长
白话理解为什么需要IOC
情景假设:
1.假如甲生产笔,乙生产笔帽,要想生产一只完整的笔,甲肯定需要笔帽啊。于是甲便派一个人去甲那里取笔帽,但是不知道什么原因乙搬家了,那甲这次是不是就要失败而归了。第一次搬家,第二次搬家…
2.于是甲很烦啊,每次去乙住的地方,乙都换位置了。于是协商了一下,你以后把生产的笔帽给我放到A城哪个仓库,以后的用的时候直接去仓库取
第一种情况发生的原因就是甲过分依赖乙,所以才会产生一些问题
第二种情况解决了问题,但是看着是不是有点麻烦,毕竟鱼与熊掌不可兼得。在数据结构中,就经常有牺牲空间换取时间!
代码理解为什么需要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了