控制反转IOC(Inversion of Control)的三个需要理清问题:

1.谁控制了谁,控制了什么东西?IOC容器控制了依赖对象的创建。

2.谁得到了反转? 一般的应用程序是,直接创建依赖于该程序的对象。而现在的思想是,把创建依赖对象的控制权转交给IOC容器。由IOC容易负责依赖对象的创建,为什么要这么做,说的简单一点是对程序的解耦。回到问题上去,谁得到了反转,依赖对象得到了反转。

3.什么是反转?有反转当然要提到正转,正转是应用程序用到了什么对象会直接在应用程序中进行创建,也就是依赖对象的正转。IOC的思想就是把依赖对象的创建交给IOC容器,由容器负责依赖对象的创建。当然这样看来反转就是依赖对象的创建反转到了IOC容器当中。

依赖注入(Dependency Injection):

其实这个概念更容易通过字面上的意思去理解,站在应用程序的角度来讲,实现一个功能绝大多数情况是要依赖于其他对象中的方法或者属性才能完成。依赖注入的思想就是当一个应用程序需要使用其他对象的时候是通过注入的方式进行实现,而非直接在代码中创建该对象。那关于依赖对象的注入就是三种方式(构造器注入,属性注入,方法注入)。

两者的关系:

  控制反转是一种思想,控制反转提倡是的在编码过程中将依赖对象的创建权限转移出来,也就是转移到IOC容器当中。依赖注入是控制反转的一种实现方式,实现方式主要是将依赖对象通过某种方式注入到应用程序当中。

IOC(控制反转)与DI(依赖注入)的个人理解。的更多相关文章

  1. 谈谈php里的IOC控制反转,DI依赖注入

    理论 发现问题 在深入细节之前,需要确保我们理解"IOC控制反转"和"DI依赖注入"是什么,能够解决什么问题,这些在维基百科中有非常清晰的说明. 控制反转(In ...

  2. IoC控制反转与DI依赖注入

    IoC控制反转与DI依赖注入 IoC: Inversion of Control IoC是一种模式.目的是达到程序的复用.下面的两篇论文是对IoC的权威解释: InversionOfControl h ...

  3. [转帖]什么是IOC(控制反转)、DI(依赖注入)

    什么是IOC(控制反转).DI(依赖注入) 2018-08-22 21:29:13 Ming339456 阅读数 20642   原文地址(摘要了部分内容):https://blog.csdn.net ...

  4. Spring的三大核心思想:IOC(控制反转),DI(依赖注入),AOP(面向切面编程)

    Spring核心思想,IoC与DI详解(如果还不明白,放弃java吧) 1.IoC是什么?    IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多 ...

  5. 谈谈php里的IOC控制反转,DI依赖注入(转)

    转自:http://www.cnblogs.com/qq120848369/p/6129483.html 发现问题 在深入细节之前,需要确保我们理解"IOC控制反转"和" ...

  6. Spring-初识Spring框架-IOC控制反转(DI依赖注入)

    ---恢复内容开始--- IOC :控制反转 (DI:依赖注入)使用ioc模式开发 实体类必须有无参构造方法1.搭建Spring环境下载jarhttp://maven.springframework. ...

  7. 学习Spring IOC控制反转和DI依赖注入总结

    30岁的小曹,20岁的身体,还在坚持在能力允许控制范围内22点睡觉,5点起床锻炼身体,好好学习,除了加班或者像今天这样的深夜,再一次写已经有X百万人写过的 spring Ioc 的总结博客. 一.IO ...

  8. Ioc(控制反转)、DI(依赖注入)

    一篇非常好的有关控制反转和依赖注入非常不错的文章,简单易通,与大家共同学习,这里只引用了一篇文章,还有很多相关的文章可以通过文章引用地址来看,相信大家看完理解的就比较深刻了 文章摘自:http://j ...

  9. 三大框架 之 Spring(IOC控制反转、DI依赖注入)

    目录 常用词汇 left join与left outer join的区别 Struts2的标签库导入 Spring Spring概述 什么是Spring spring特点 下载 IOC 什么IOC 传 ...

  10. spring(一) IOC 控制反转 、DI 依赖注入

    IOC 控制反转:创建对象的方式  变成了由Spring来主导 IOC底层原理:对象工厂 1.导入jar包:4个核心jar和1个依赖jar spring-beans-4.3.9.RELEASE.jar ...

随机推荐

  1. mvc分层的原理

    首先这是现在最基本的分层方式,结合了SSH架构.1.modle层就是对应的数据库表的实体类.2.Dao层是使用了hibernate连接数据库.操作数据库(增删改查).3.Service层:引用对应的D ...

  2. 在Mybatis-spring中由于默认Autowired导致不能配置多个数据源的问题分析及解决

    在使用Mybatis中,通常使用接口来表示一个Sql Mapper的接口以及相对应的xml实现,而在spring的配置文件中,通常会使用MapperScannerConfigurer来达到批量扫描以及 ...

  3. 分析IIS日志文件

    "D:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT * FROM 'D:\u_ex160405.l ...

  4. 更改Sublimetext3的主题文件,改变某些不喜欢的颜色

    使用的主题是Monokai(SL),主题很好看,但是注释和内容选中的颜色看起来跟没有一个样,看起来很淡,所以稍微改一下主题文件的颜色.

  5. [Javascript + rxjs] Introducing the Observable

    In this lesson we will get introduced to the Observable type. An Observable is a collection that arr ...

  6. [D3] 14. Line and Area Charts with D3

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. JavaScript 应用开发 #2:视图与模板

    在用 Backbone 开发的 JavaScript 应用里面,除了模型与集合以外,另一个重要的部分就是视图,英文是 View .在视图里面,我们可以去监听在页面上发生的事件,还有与视图相关的模型和集 ...

  8. PHP中用mysqli面向对象打开连接关闭mysql数据库

    代码如下: <meta http-equiv="content-type" content="text/html" charset="utf-8 ...

  9. angularjs-yeoman环境配置

    yum install npm -y npm install -g grunt-cli bower yo generator-karma-require generator-angular-requi ...

  10. oracle知识杂记

    索引类型 1.B-树索引 分区索引.压缩索引.函数索引等都属于B-树索引 2.位图索引 3.索引组织表 索引管理 1.普通单列索引                    对where条件.group ...