框架是JAVA面试中比较重要的一个部分,而Spring是面试最爱问的框架之一。Spring中最重要的就是IOC和AOP这两大概念,本篇中对于IOC相关知识及面试题作一个总结。
首发于github:github JavaLeaning Spring IOC
文章目录
IOC基本概念
IOC:Inverse of Control 也即控制反转
下面分三个方面来陈述:
- 性质:IOC本质上是一个什么东西。
- 目的:IOC之所以存在,是为了解决什么问题?
- 内容:IOC为了实现它的目的,要做些什么?
性质
IOC是一种设计思想。
它不是一种具体的技术,虽然我们经常把IOC和Spring联系在一起,但其实它也完全可以体现在其他的框架和语言中。
目的
借助IOC设计思想,我们希望能够做到互相依赖的对象之间的解耦。
内容
没有引入IOC的软件系统
软件系统内部肯定有若干个对象存在,其中部分与部分对象之间存在着互相调用或依赖的关系,导致对象之间耦合度较高,如下图:
我们可以把对象比喻成齿轮。如果几个耦合的对象中有一个对象不动了(无法正常工作),那么其他的对象也无法正常工作。导致“牵一发而动全身”的情况。
引入IOC的软件系统
在引入IOC容器后,我们再来看一下这个软件系统: