【概述】

1.IOC(Inversion of Control):

即“反转控制”,不是什么技术,而是一种设计思想。其思想是反转资源获取的方向。

传统的资源查找方式要求组件向容器发起请求查找资源。作为回应,容器适时地返回资源。

而在应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被称为查找的被动形式。

所谓IOC其实就是打破原有的由类自身创建对象改变为由容器来创建对象。IOC主要包含反转(角色的反转)和控制(对象的创建)两个部分。

【猩生柯北举栗子:就好像是以前买菜你需要亲自提着菜篮子去菜市场买菜,而现在用了IOC后就不用亲自去菜市场了了,你只需要将菜篮子放在家门口,菜就会自己到你的篮子里面。】

2.DI(Dependency Injection)--IOC的另一种表述方式:即组件以一些预定义好的方式(例如:setter方法)接受来自如容器的资源注入。相对于IOC而言,这种表述更加直接。

【示例】

class A{}

class B{

private A a;

public void setA(A a){

this.a = a;

}

}

需求:从容器中获取B对象,并使B对象的a属性被赋值为容器中A对象的引用。

传统方式:

A a = getA();  //获取A

B b = getB();  //获取B

b.setA(a);   //建立关联关系

用IOC容器:

B b = getB();

说明:用IOC容器后,容器通过setter方法自动把A对象的引用赋给了B对象的a属性。

IOC发展:分离接口和实现(原始社会),工厂设计模式(封建社会),反转控制(按需分配)。

最新文章

  1. applicationContext.xml
  2. Struts.xml中Action的method与路径的三种匹配方法
  3. ubuntu12.10 源更新出错(sudo apt-get update)
  4. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
  5. GridView----CustomRowCellEdit 使用注意事项
  6. 推荐算法——距离算法
  7. LINQ to SQL语句非常详细(原文来自于网络)
  8. SQL在指定列后添加新的列
  9. mysqldump 参数说明
  10. 微软职位内部推荐-Senior Software Development Engineer
  11. openstack私有云布署实践【11.2 计算nova - compute节点配置(办公网环境)】
  12. 如何创建一个Django项目
  13. git忽略文件并删除git仓库中的文件
  14. SQL Server元数据损坏(metadata corruption)修复
  15. Exception in thread "main" org.I0Itec.zkclient.exception.ZkAuthFailedException: Authentication failure is thrown while creating kafka topic
  16. Scrum【转】
  17. 使用 curl 进行 ssl 认证
  18. (Java)入门训练 斐波那契数列
  19. Flink - ResultPartition
  20. python+unittet在linux与windows使用的区别

热门文章

  1. Qt事件系统之四:定时器事件与随机数
  2. 【LeetCode】树的遍历
  3. Suricata是什么?
  4. 使用Dotfuscator保护.NET DLL加密DLL,防止DLL反编译
  5. ReactJS-2-props vs state
  6. MTK处理器手机 解锁Bootloader 教程
  7. 重构29-Remove Middle Man(去掉中间人)
  8. spring-mvc hello world (1)
  9. 语音行业技术领先者Nuance上海诚招ASR/NLP研发工程师和软件工程师
  10. iTOP-4418开发板最新资料及例程