1.1 依赖注入和控制反转

背景

“问题是,[它们]反向控制哪一方面?”,2004 年,Martin Fowler 在他个人站点提出 了这个关于控制反转(IoC)的问题。Fowler 建议重命名这个原则,使得它更好地自我解 释,同时提出了依赖注入。

要 深 入 了 解 IoC 和 DI , 可 以 参 考 Fowler 的 文 章 , 地 址 是 :

http://mart inf owler.com/artic les/injection.html

Java 应用程序 -- 一个宽松的术语,囊括了从被限制的 applet 到 n 层服务器端的企业级 应用程序的全部 – 典型的应用是,包含了组成独特应用程序的合作对象。那么在应用程序 中的这些对象就会有相互依赖关系。

尽管 Java 平台提供了丰富的应用程序开发功能,但是它也缺乏组织基本模块到整体的 方式,而是把这个任务留给了系统架构师和开发人员去解决。也就是说,你可以设计如工厂, 抽象工厂,构建者,装饰者和服务定位器等设计模式来组合各个类,以及构成该应用程序的 对象的实例。然而,这些模式都是最简单的:最佳的做法是给定一个名称,并且描述这个模 式做了些什么,在哪里可以应用它,它所强调的问题是什么等等。模式可以使得你必须自己 实现的最佳实践形式化。

Spring Framework 的控制反转(Inversion of Control,IoC)组件提供了组合不同的组件到 完整可用的应用程序的形式化方法。Spring Framework 编写了形式化的设计模式作为顶级对 象,你可以用来整合到你自己的应用程序中。很多组织和研究机构使用 Spring Framework 的 这个方式来设计健壮的,可维护的应用程序。