ioc是什么的英文缩写(ioc是什么意思_)

刚毕业开始找工作时总是被问道这个问题,IOC(控制反转)和DI(依赖注入)是什么关系呢,能不能讲一讲IOC和DI,以前就认为面试官想聊聊spring bean的初始化过程,于是巴拉巴拉的讲了一通。但经过几年的工作和期间的不断学习才深刻理解了其中的含义。话不多说举一个场景:我们打工人每天朝九晚五,上班就要坐地铁、公交车、骑共享单车。当然有些土豪也是开车上班的。

ioc是什么的英文缩写(ioc是什么意思_)

ioc是什么的英文缩写(ioc是什么意思_)

ioc是什么的英文缩写(ioc是什么意思_)

此时我们就有三个类:Worker(打工人)、Transport(交通工具)、Bus(公交车)

ioc是什么的英文缩写(ioc是什么意思_)

此时有打工人迷迷糊糊睡到早上七点很不情愿地去上班,由于我们在代码里写死了只能坐公交车去。这样有一个很严重的问题:worker跟Transport是强耦合,如果想换成地铁或者自驾就得改代码了。有人会说Transport通过构造器传进去不就好了吗

ioc是什么的英文缩写(ioc是什么意思_)

ioc是什么的英文缩写(ioc是什么意思_)

确实是解决了强耦合问题,需要什么交通工具就用什么交通工具,看上去很完美

ioc是什么的英文缩写(ioc是什么意思_)

但如上再来一个打工人2也坐公交车呢,发现没有又构造了一个bus对象,这就是谁调用谁构造的弊端——bus不会是单例。这就会浪费很多的内存,这就是IOC(控制反转)解决的问题

spring IOC管理JVM进程中的bean工厂

通过把我们需要的对象都交给spring容器进行管理,当我们需要用到什么对象时再通过DI(依赖注入)向spring容器拿缓存好的bean。

ioc是什么的英文缩写(ioc是什么意思_)

ioc是什么的英文缩写(ioc是什么意思_)

当然也可以通过xml的bean标签方式,DI一般有三种方式:setter方法、构造器、注解。现在一般都是用注解方式。

总结:1. IOC实际就是把java程序需要用到的对象交给spring容器初始化并持有,而不是由调用者自己初始化

2.DI实际就是当调用者需要什么类的对象时向spring容器拿,而不用自己构造。调用者拿的方式主要有三种:setter方法、构造器、注解。

3.使用spring容器的好处:调用者和被调用者松耦合,并保持了对象的单例(这也是spring容器中的bean为什么默认是singleton的原因)

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.shangmengchina.com/8003.html