spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控制什么?依赖注入和控制反转是一样的概念吗?
依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性。我们可以从以下几个方面理解:
a、参与者都有谁?
b、依赖:谁依赖谁?为什么需要依赖?
c、注入:谁注入谁?又注入了什么呢?
d、控制反转:谁控制谁?控制什么?为什么叫反转呢?存在正转吗?

e、控制反转和依赖注入是同一个概念吗?我们需要弄明白上面的问题,这样对于控制反转和依赖注入的理解有大大的帮助。

首先:第一个问题,参与者都有谁?
1)对象
2)IOC/DI容器
3)某个对象的外部资源
第二问题:依赖,谁依赖谁?为什么需要依赖?
依赖嘛,很好理解的,对象依赖于IOC/DI容器,至于为什么要依赖呢?对象需要IOC/DI容器来提供对象需要的外部资源。
第三个问题:注入,谁注入谁?又注入了什么呢?
显而易见是IOC/DI容器注入对象,注入了what呢?肯定注入的是某个需要的东西那就是注入对象所需要的资源,肯定不会注入无关紧要的内容,你说呢?
第四个问题:控制反转,谁控制谁?控制什么?为什么叫反转呢?存在正转吗?
控制反转,控制什么?肯定是IOC/DI容器控制对象,主要是控制对象实例的创建,反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。
第五个问题:控制反转和依赖注入式同一个概念吗?
依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

最新文章

  1. c# 本周时间查询
  2. Javascript、Jquery获取浏览器和屏幕各种高度宽度
  3. IT经理,你在这个位置吗
  4. java学习笔记_GUI(5)
  5. 从零开始PHP学习 - 第五天
  6. JS笔记 入门第一
  7. [置顶] think in java interview-高级开发人员面试宝典(二)
  8. HTML5实现涂鸦板
  9. .net平台的MongoDB使用
  10. Kafka生产者发送消息的三种方式
  11. OTB数据库上各tracker评测结果
  12. 教你使用docker部署淘宝rap2服务
  13. shell脚本--初识CGI
  14. 协议并发测试工具 BoHexTest
  15. pta6-17(另类堆栈)
  16. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十三)
  17. [转]StarWind模拟iSCSI设备
  18. KJBitmap与KJHttp的深度用法
  19. pssh安装和使用
  20. Missing artifact com.github.pagehelper:pagehelper:jar:3.4.2-fix的解决方法

热门文章

  1. DIV横向排列_CSS如何让多个div盒子并排同行显示
  2. hl7 V2中Message Control ID的含义及应用
  3. 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION (转)
  4. 使用base64对图片的加密解密
  5. [C++] 分治法之棋盘覆盖、循环赛日程表
  6. HTML5通信
  7. Java-API-Package:javax.annotation
  8. DCloud-5+Runtime:杂项
  9. mybatis 学习六 MyBatis主配置文件
  10. Java学习之数据的时间及热度属性