Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的。结合网上对Spring Ioc的理解,回顾一下自己对Ioc的理解。

Ioc Inversion of Control  "控制反转",这不是一种技术,而是一种设计思想。Ioc是将对象交给容器控制管理,而不是传统得自己控制。理解Ioc需明确知道“谁控制谁,控制什么”,“为何反转,哪些方面反转了

  • 谁控制谁,控制什么:一般情况下,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而Ioc有专门的容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁,是Ioc容器控制对象;控制了什么:主要控制外部资源的获取(不仅只包括对象而且还包括文件等)
  • 为何反转,哪些方面反转了:传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,而反转则是由容器来帮忙创建及注入依赖对象.为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

DI Dependency Injection "依赖注入" :组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中。通过依赖注入机制,只需要简单的配置,无需任何实现代码就可以指定目标需要的资源。理解DI需明确“谁依赖谁,为何依赖”,“谁注入谁,注入了什么

  • 谁依赖谁,为何依赖:应用程序依赖Ioc容器,需要Ioc容器提供对象所需的外部资源
  • 谁注入谁,注入了什么:Ioc容器注入应用程序某个对象,应用程序依赖的对象;注入的是某个对象所需要的外部资源(对象,资源,数据常量)

最新文章

  1. Keepalived的全局配置
  2. win7系统下 自带的定时关机
  3. 获取documents、tmp、app、Library的路径的方法
  4. 302 Moved Temporarily
  5. 如何删除控制文件中过去rman备份到磁带的备份集
  6. Android UI组件----ListView列表控件详解
  7. word-break:brea-all;word-wrap:break-word的区别
  8. sublimeLinter-jshint 配置
  9. Failed to read artifact descriptor--maven问题总结(能力工场)
  10. Android JNI之调用JAVA方法的返回类型签名
  11. WPF Image控件中的ImageSource与Bitmap的互相转换
  12. emmt html生成
  13. [Drools]JAVA规则引擎 -- Drools
  14. Servlet的学习之Session(3)
  15. 计算机网络课程优秀备考PPT之第一章概述(一)
  16. 2.14. 删除托管对象(Core Data 应用程序实践指南)
  17. Gitlab CI 自动部署 asp.net core web api 到Docker容器
  18. Vue入门
  19. NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
  20. VBA中使用正则的两种方式

热门文章

  1. 使用Hudson进行持续集成
  2. Hibernate 系列 08 - 对象识别机制
  3. 用application实现一个网页的浏览计数器
  4. PHP语法(一):基础和变量
  5. CentOS安装Nginx-1.6.2+安全配置
  6. XML简介与CDATA解释
  7. 如何通过JS调用某段SQL语句
  8. Bootsrap基本应用
  9. jq封装淘宝图片轮播插件
  10. 庆祝下,提交了第一个ceph pull request。实现了从0到1的突破