2.1 依赖注入和控制反转

Java应用程序——范围从受限的、嵌入式的应用到N层的、服务器端的企业应用——通常由协作形成该程序的对象构成,因此一个应用程序中的对象彼此依赖。

虽然Java平台提供了大量的程序开发功能,但是它缺少将基础构建块组成一个整体的工具,而将此任务留给了架构师和开发者。尽管可以利用设计模式(比如FactoryAbstract FactoryBuilderDecoratorService Locator)来组合各个类和对象实例以构成应用程序。设计模式简单来说就是一个给定名称的最佳实践,同时描述了该模式做了什么、在哪里应用它以及它解决了什么问题。然而模式是形式化的最佳实践,您必须亲自在程序中实现它们。

Spring Framework的控制反转(IoC)组件解决了这种顾虑,它提供了一套固定的方法将不同的组件组合成完整的、随时可用的应用程序。Spring Framework将形式化的设计模式编纂其中,并作为第一等的对象以便您能集成到自己的程序中。众多组织和机构都这样使用Spring Framework来设计健壮、可维护的应用。

背景

“问题是,控制的哪个方面被反转了?”2004年,Martin Fowler在自己网站上提出了这个关于控制反转(IoC)的问题。Fowler建议为了使这一原理更加自明(self-explanatory),将其重命名为Dependency Injection(依赖注入)。