IOC是一种叫做“控制反转”的设计思想。

1、较浅的层次——从名字上解析 
“控制”就是指对 对象的创建、维护、销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个对象(创建),在使用过程中保持引用(维护),在失去全部引用后由GC去回收对象(销毁)。 
“反转”就是指对 对象的创建、维护、销毁等生命周期的控制由程序控制改为由IOC容器控制,需要某个对象时就直接通过名字去IOC容器中获取。

2、更深的层次——提到DI,依赖注入,是IOC的一种重要实现 
一个对象的创建往往会涉及到其他对象的创建,比如一个对象A的成员变量持有着另一个对象B的引用,这就是依赖,A依赖于B。IOC机制既然负责了对象的创建,那么这个依赖关系也就必须由IOC容器负责起来。负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象,如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。

3、IOC的意义何在? 
IOC并没有实现更多的功能,但它的存在使我们不需要很多代码、不需要考虑对象间复杂的耦合关系就能从IOC容器中获取合适的对象,而且提供了对 对象的可靠的管理,极大地降低了开发的复杂性。

最新文章

  1. 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求
  2. IntelliJ IDEA中如何显示和关闭----工具栏,目录栏,(转)
  3. Spring 事务注解 错误问题
  4. [vijos P1034] 家族
  5. Makefile第四讲:include 引用其它makefile文件
  6. EditText 密码属性
  7. HTML5触摸屏touch事件使用实例1
  8. OpenCV——手势识别
  9. zoj3640(概率dp)
  10. (九)通过几段代码,理清angularJS中的$injector、$rootScope和$scope的概念和关联关系
  11. SQL Tuning Advisor一个错误ORA-00600: internal error code, arguments: [kesqsMakeBindValue:obj]
  12. Python账号密码登陆判断(三次机会)
  13. asp.net core项目 部署在 linux上
  14. 【Linux系列】Ubuntu ping通,xshell无法连接
  15. 高能天气——团队Scrum冲刺阶段-Day 7 总结
  16. [leetcode]543. Diameter of Binary Tree二叉树直径
  17. Vue.js (Frontend & Backend)尝试前后端分离
  18. $NOIp$前的日常
  19. MongoDB 安装及开启关闭
  20. C++中前置声明的应用与陷阱

热门文章

  1. Java基础总结大全
  2. Robot Framework接口测试(3)--http请求之post
  3. 【策略】一致性Hash算法
  4. [BZOJ]4034: [HAOI2015]树上操作
  5. python 的日志logging模块
  6. BZOJ3790:神奇项链
  7. Linux IO 监控与深入分析
  8. MTK驱动移植相关路径
  9. lnmp php7 安装mysqli扩展 undefined function mysqli_connect()
  10. druid抛出异常:javax.management.InstanceAlreadyExistsException: com.alibaba.druid:type=DruidDataSource,id=xxx