深刻理解-Spring-之源码剖析IOC(一)

引言java

做为Java程序员,Spirng咱们再熟悉不过,能够说比本身的女友还要亲密,天天都会和他在一块儿,然而咱们真的了解spring吗?程序员

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

什么是IOC? IOC解决了什么问题?IOC的原理是什么?Spring的IOC是怎么实现的?今天咱们将会将这几个问题一块儿解决。编程

1. 什么是IOC?框架

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

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

经过控制反转,对象在被建立的时候,由一个调控系统内全部对象的外界实体,将其所依赖的对象的引用传递给它。也能够说,依赖被注入到对象中。设计

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

楼主想反向证实IOC,咱们提出一个疑问:若是没有IOC会怎么样?对象

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

而且各个对象相互依赖,咱们须要控制他们的依赖关系,何时new ,何时销毁,何时须要单例,何时不须要单例等等这些问题。

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

可是若是有一种东西,他可以帮助咱们管理全部类的建立,销毁,是不是单例模式,类与类之间的多层依赖关系(在咱们的MVC框架中,3层依赖已是最少),那该多好,咱们只须要关注业务逻辑。因而 ,IOC诞生了。

2. IOC 解决了什么问题?

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

3. IOC 的原理是什么?

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

相关文章
相关标签/搜索