博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解-Spring-之源码剖析IOC(一)
阅读量:6158 次
发布时间:2019-06-21

本文共 1082 字,大约阅读时间需要 3 分钟。

hot3.png

引言

作为Java程序员,Spirng我们再熟悉不过,可以说比自己的女朋友还要亲密,每天都会和他在一起,然而我们真的了解spring吗?

我们都知道,Spring的核心是IOC和AOP,但楼主认为,如果从这两个核心中挑选一个更重要的,那非IOC莫属。AOP也是依赖于IOC,从某些角度讲,AOP就是IOC的一个扩展功能。

什么是IOC? IOC解决了什么问题?IOC的原理是什么?Spring的IOC是怎么实现的?今天我们将会将这几个问题一起解决。

1. 什么是IOC?

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。

通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

这是维基百科的说法,楼主按照自己的思路分析一下IOC,楼主认为,分析一个问题,或者说证明一个事情,有2种方法,一是正向验证,即按照该事物的逻辑去验证正确性,还有一种是反向验证,证明该事物是否正确。

楼主想反向证明IOC,我们提出一个疑问:如果没有IOC会怎么样?

想象一下,在没有IOC的世界里,我们的系统会有大量的对象,这些对象有些是数据,有些是处理数据的。

并且各个对象相互依赖,我们需要控制他们的依赖关系,什么时候new ,什么时候销毁,什么时候需要单例,什么时候不需要单例等等这些问题。

你能想象吗?当你一个系统有几千个类,你如何管理他们的依赖关系,说起依赖,我们可能会想起 maven 或者 gradle,他们管理着我们的 jar 包依赖,而我们的系统代码呢?

但是如果有一种东西,他能够帮助我们管理所有类的创建,销毁,是否是单例模式,类与类之间的多层依赖关系(在我们的MVC框架中,3层依赖已经是最少),那该多好,我们只需要关注业务逻辑。于是 ,IOC诞生了。

2. IOC 解决了什么问题?

简单来说, IOC 解决了类与类之间的依赖关系。程序员将控制类与类之间依赖的权利交给了IOC,即:控制被反转了。

3. IOC 的原理是什么?

其实 IOC 的原理很简单,底层就是java的反射。给定一个字符串能创建一个实例,利用set方法对实例的依赖进行注入。

转载于:https://my.oschina.net/u/3611008/blog/2046099

你可能感兴趣的文章
人工智能大幕开启 安防行业已成先头部队
查看>>
"2016中国APP分类排行榜发布暨颁奖晚宴" —— 兰亭修禊少长有王谢 黔香阁暖高见望诸公...
查看>>
2016年这些网络新贵或被并购
查看>>
Scatec Solar拟在乌克兰建设60MW光伏电站
查看>>
你真的在正确地使用WLAN控制器吗?
查看>>
阿里技术大神:你没做错啥,你错在啥都没做
查看>>
iOS开发之FMDB
查看>>
ENISA报告:ICS-SCADA防护建议
查看>>
web前端性能分析--实践篇
查看>>
《Java和Android开发实战详解》——2.2节构建Java应用程序
查看>>
《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...
查看>>
《Swift开发实战》——导读
查看>>
Java ThreadLocal的使用
查看>>
同步和异步, 阻塞和非阻塞, Reactor和Proactor
查看>>
首次!海豚间像人类一样的交谈被水下麦克风记录
查看>>
《PHP和MySQL Web开发从新手到高手(第5版)》一一第1章 安装
查看>>
《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
查看>>
Linux环境下安装RocketMQ(MetaQ)
查看>>
ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
查看>>
分布式锁的实现
查看>>