概念:dependency injection, IOC, vs callback
callback function as a dependency of the object that it is being passed into. DI is the process of providing the callback (the dependency) to the object. (For example: by giving it to the object via its constructor, a method call, a setter, etc.).
翻译: callback是具体的依赖, DI是注入依赖的过程
DI是IoC的子集
- IoC意味着对象不会创建他们依赖的其他对象来完成他们的工作。相反,他们从外部服务(例如,xml文件或单个应用程序服务)获取他们需要的对象。我使用的IoC的2个实现是DI和ServiceLocator。
- DI意味着在不使用具体对象而是使用抽象(接口)的情况下完成获取依赖对象的IoC原则。这使得所有组件链可测试,导致更高级别的组件不依赖于更低级别的组件,仅来自接口。Mocks实现了这些接口。

IoC(I nversion o f C ontrol ): - 这是一个通用术语,以多种方式实现(事件,代理等)。
DI(D ependency I njection): - DI是IoC的子类型,通过构造函数注入,setter注入或接口注入实现。
但是,Spring仅支持以下两种类型:
- 二传手注射
- 基于setter的DI是通过在调用无参数构造函数或无参数静态工厂方法来实例化其bean之后调用用户bean上的setter方法来实现的。
- 构造函数注入
- 基于构造函数的DI是通过调用具有多个参数的构造函数来实现的,每个参数代表一个协作者。使用这个我们可以验证注入的bean不是null并且快速失败(编译时失败而不是运行时),所以我们得到了启动应用程序本身
NullPointerException: bean does not exist。构造函数注入是注入依赖项的最佳实践。
- 基于构造函数的DI是通过调用具有多个参数的构造函数来实现的,每个参数代表一个协作者。使用这个我们可以验证注入的bean不是null并且快速失败(编译时失败而不是运行时),所以我们得到了启动应用程序本身
概念:dependency injection, IOC, vs callback的更多相关文章
- 控制反转Inversion of Control (IoC) 与 依赖注入Dependency Injection (DI)
控制反转和依赖注入 控制反转和依赖注入是两个密不可分的方法用来分离你应用程序中的依赖性.控制反转Inversion of Control (IoC) 意味着一个对象不会新创建一个对象并依赖着它来完成工 ...
- [转载][翻译] IoC 容器和 Dependency Injection 模式
原文地址:Inversion of Control Containers and the Dependency Injection pattern 中文翻译版本是网上的PDF文档,发布在这里仅为方便查 ...
- C# Ioc ASP.NET MVC Dependency Injection
ASP.NET MVC Dependency Injection 同志们,非常快速的Ioc注册接口和注入Mvc Controller,步骤如下: 安装Unity.Mvc NuGet Package 在 ...
- 控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI)
控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI),是一个重要的面向对象编程的法则来削减计算机程序的 ...
- [LINK]List of .NET Dependency Injection Containers (IOC)
http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx I'm trying to expand my ...
- 【译】Dependency Injection with Autofac
先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就 ...
- Spring 基础知识(一)基本概念 DI、IOC、AOP
DI(依赖注入) 和IOC(控制反转)都是一种设计思想,要理解他们,让我们从coding中的一些痛点入手. 依赖注入 Dependency Injection : 如果A类要使用B类的一个方法,首先必 ...
- spring 概念之:IoC(控制反转)
IoC(控制反转,Inverse of Control) IoC 的字面意思是控制反转,它包括两方面的内容: 控制 反转 那到底是什么东西的"控制"被"反转"了 ...
- Dependency Injection 筆記 (1)
<.NET 依賴注入>連載 (1) 本文从一个基本的问题开始,点出软件需求变动的常态,以说明为什么我们需要学习「依赖注入」(dependency injection:简称 DI)来改善设计 ...
随机推荐
- C# Cache 设定过期时间的方法
1. 设定绝对过期时间 /// <summary> /// 设定绝对的过期时间 /// </summary> /// <param name="CacheKey ...
- C语言获取Linux系统精确时间
gettimeofday()函数的使用方法 1.函数原型 #include <sys/time.h> int gettimeofday(struct timeval *tv, struct ...
- SQL查询日期格式化
MARK一下 方便以后自己查阅 举例如下: getdate() 可以替换成日期类型字段 select Convert(varchar(10),getdate(),120) 2006-05-12sele ...
- webpack不同版本导致的promise不存在问题
之前采用的axios是基于promise的,但是IE并没有内置promise,所以要提前install一个promise插件: npm install promise import Promise f ...
- Android测试(一)——Apk文件结构以及Android组件介绍
APK文件结构: assests目录:一般存放的是不会被编译处理的文件,一般是资源性质的文件或者配置文件: libs目录:程序依赖的native库,包含针对特定处理器软件层的编译代码: res目录:存 ...
- MySQL字符串列与整数比较
一.问题说明 为了简便在存储时我们经常将整型字段也以字符串形式存储(如id值),但在筛选比较时就需要将该字段转为数值类型. 二.处理办法 2.1 使用cast函数进行类型转换 cast函数格式---- ...
- with&as上下文管理协议
通过with 方式调用的方式 class Open: def __init__(self,name): self.name = name def __enter__(self): #with调用的时候 ...
- linux svn 多项目设置
cd /svn/repos svnadmin create project_a svnadmin create project_b cd project_a cp -a conf /svn/ cd / ...
- 调试nodejs项目接口,使用Posman,用req.body拿不到数据
近日在postman 上面测试nodejs写的post接口,发现后台接受不到数据. 很多人其实不知道怎么postman 上面GET和POST怎么使用的 Postman接口操作 1.GET请求操作: 2 ...
- react-native 打包apk
如果你是学习Android的和我一样的话那一定会用一些软件开发,如WebStore 等等 那么这里我就来讲一下在WebStore 开发的App 如何打包成一个手机可以安装的apk软件 1.首先你的Ap ...