Spring(2):IOC控制反转(又叫:依赖注入DI)

这是一篇让人豁然开朗的博客.......

一、Spring IOC介绍(控制反转,也叫依赖注入DI)

IoC作用:为了解决对象之间耦合性过高的问题

1.1、什么是控制反转

简单来说就是把复杂系统分解成互相合作的对象,这些对象通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,可以被重用和扩展(就是,借助“第三方”实现具有依赖关系的对象之间的解耦

图片分析:由于引入了中间位置的“第三方(IoC容器)” ,使得A、B、C、D这4个对象没有了耦合关系,“齿轮之间转动全靠第三方了”,也就是说全部对象的控制权全部交给“第三方”IoC容器,类似“粘合剂”把所有对象粘合在一起发挥作用。

总结:没引入IOC之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点时 必须去主动创建对象B或者使用已经创建的对象B,A获取B与否,控制权在自己手上。引入IOC之后,对象A和B失去了直接联系,当A需要B时,IOC容器会主动创建一个对象B注入到对象A需要的地方,A获取B控制权被动了——所以叫控制反转。

————来自

1.2、IoC别名:依赖注入(DI)

什么是依赖注入

就是IOC容器在运行期间,动态地将某种依赖关系注入到对象之中,依赖注入(DI)和控制反转(IOC)是从不同角度描述一件事——通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。

————来自《Spring技术内幕》

1.3、IOC容器的技术实现

IOC基本的技术实现就是“反射(Reflection)”编程,反射知识可以看博主这篇博客:反射学习。所谓反射通俗地说就是根据给出的类名(字符串方式)来动态生成对象,让对象生成时才决定是是哪种对象。

理解:

可以把IOC容器工作模式类似工厂模式的升华,可以把IOC容器看成一个工厂,但是这个工厂里要生产的对象都在配置文件中给出定义,然后利用反射机制根据配置文件的类名生成相应的对象。

从实现来看,IOC是把以前在工厂方法里写死的对象生成,改为由配置文件定义,也就是把工厂和对象的生成两者独立分割开了(与工厂模式的区别),目的就是提高灵活性和可维护性(所以叫工厂模式的升级

1.4、IOC框架的使用

IOC技术主要产品:Spring框架

使用IOC的缺点:引入了第三方容器把生成对象的步骤复杂了、IOC容器生成对象是通过反射方式,反射会降低性能

二、Spring IOC源码分析

待更新....

推荐阅读1:https://yikun.github.io/2015/05/29/Spring-IOC%E6%A0%B8%E5%BF%83%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/

推荐阅读2:https://javadoop.com/post/spring-ioc

上一篇:Spring AOP面向切面编程

下一篇:Spring框架深入介绍

  参考资料:《Spring技术内幕》

发布了52 篇原创文章 · 获赞 116 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/RuiKe1400360107/article/details/103597460