需要明确一点,任何项目没有了Spring,也依旧能做,那么为什么Spring还会这么火?答案就是Spring的两个特性IoC与AOP,这里需要指出的是,并不是Spring提出的AOP的概念,只能说是Spring很好的实现了AOP的特性。那么,这次就先讨论下Spring IoC的实现机制。
- IoC是什么东东?
- IoC实现的机制是什么样子的?
- 模拟Spring IoC的实现
- Spring源码中的IoC
- 参考资料
一、IoC是什么东东?
IoC的e文叫做Inversion of Control,翻译过来就是控制反转,那么IoC究竟翻转了什么呢?思考下在面向对象的世界中,如果我们想在对象A中,操作对象B,那么A一定会持有B的引用(对象关系),而后才能进行操作。这样的带来的问题是代码不够整洁、代码维护成本高、耦合度大。
那么,Spring IoC带来了这个问题的解决办法,Spring将对象之间的依赖关系转而用配置文件来管理,也就是Spring的DI——Dependency Injection(依赖注入),同时,任何一个对象都应该有一个保存他的地方,也就是IoC容器,IoC容器保存了所有的Bean对象,这个Bean对象就是真实的Object。Spring通过IoC容器,进而操作这些Bean,从而达到对这些对象管理以及一些列额外操作的目的。
那么接下来回答前文提出的问题:
Q:IoC是什么?
A:IoC是控制反转器。
Q:IoC反转了什么?
A:IoC反转了对象的创建及依赖关系,Spring将对象的创建以及对象之间的依赖关系交给了IoC容器来管理,管理的标准,则是配置文件。