重新认识IoC

IoC发展简介:你可能对IoC有些误会?

什么是IOC

重新认识IoC
重新认识IoC
IOC其实是一种编程思想或原则。相对于传统的编程方式(如从前文到后文这样串行顺序的方式),比如用传统方式,当我依赖一个对象,我要去创建它,对它进行属性配置,然后我才能使用这个对象。
但是对于IOC这种方式来说,它使对象或者组件的创建更为透明,不需要过多的关注细节(如创建对象、给对象设置属性,这些ioc容器都给我们设置好了),以达到解耦的目的。控制反转,简单来理解其实就是把获取依赖对象的方式,交给IOC容器来实现,由主动拉取,变为被动获取。

IoC主要实现策略:面试官总问IoC和DI的区别,他真的理解吗?

IoC 主要实现策略

重新认识IoC
重新认识IoC
以上就是讨论关于主流IOC的一个实现策略,可划分为2个部分:

  1. Dependency Lookup(依赖查找)
  2. Dependency Injection(依赖注入)
    在SpringFrameWork里面这2部分都有涉猎,这两部分都很重要

IoC容器的职责:IoC除了依赖注入,还涵盖哪些职责呢?

重新认识IoC重新认识IoC
依赖查找和依赖注入是对依赖处理的2种实现方式.依赖查找是主动的实现方式,依赖注入是被动的实现方式(尽管也有主动的方式),但是大多数工作时被容器给做掉了.无论是那种方式,最重要的还是最依赖的处理,依赖怎么来的以及怎么把它返回给客户端.这其中有不少环节.例如根据名或者类型来查找.其中也会涉及到类型转换.
生命周期

  1. 容器的生命周期.容器自己有自己的启动停止,暂停,终止回滚等操作.
  2. 托管资源并非是SpringBean.
    配置
    容器的配置(例如定时任务的容器)
    外部化配置:属性配置:xml,properties,yaml
    外部化配置和上面的生命周期中含义一直.

除了Spring,还有其它的IOC容器实现吗?

重新认识IoC
IOC是一种原则(好莱坞原则),IOC容器是将理论落地后的实现方式,具体可以实现哪些就参考职责.Ioc容器的实现并非只有Spring一家,在JavaSE,JavaEE,开源领域都有对IOC原则的容器的响应实现.

传统IoC容器实现:JavaBeans也是IoC容器吗?

轻量级IoC容器:如何界定IoC容器的“轻重”?

重新认识IoC
重新认识IoC
释放掉一些容器,容器更轻
最大化的代码复用
更大的程度上的面向对象
更大化的产品化
更好的测试

依赖查找 VS. 依赖注入:为什么Spring总会强调后者,而选择性忽视前者?

重新认识IoC