背景:
2004年初,Martin Fowler在谈到“控制反转”问题时,问他的读者下面的问题:反转的是控制的哪个方面?。Fowler建议重新命名这个概念(或者至少给它一个更便于理解的名字),他开始使用“依赖注射”这个词汇。他的文章进一步解释了“控制反转”和“依赖注射”这两个基础概念。如果您需要进一步了解IOC和DI,请访问他的文章链接:
|
Java语言平台提供了大量的功能模块来构建应用,包括原始的类搭建应用(定义新的类)、具有丰富特性的应用服务和Web框架。然而,关于如何更有效的组合程序块成为一个整体这个方面却是一个未被提及的方面;这个问题被抛给了系统架构师和开发者。值得庆幸的是,目前已经有很多设计模式被创建出来,用来处理包含了许多类和对象实例的业务逻辑。
诸如Factory、Abstract Factory、Builder、Decorator和Service Locator这些设计模式已经在软件开发企业中被广泛的了解和接受了(或许,首先就在这里很正式的提及这些模式的原因)。这当然是件好事,但目前的这些模式往往是这样的:首先为那些“最佳实践”起个名字,然后告诉你这个模式是做什么的;这个模式在什么情况下使用最好;使用这个模式的应用可能存在的问题等等。你当然可以采用一大堆的模式介绍的书籍和wikis的“最佳实践”来构建应用;然后,最终你还是必须在你的应用中自己去实现它们(implement yourself)。
Spring框架的IOC组件提供了一种标准的方式来将各类基本组件组成一个可以运行的应用,它关注如何将类、对象和服务组件成一个企业级应用。Spring框架将业界经过多年证明的“最佳实践”形成为设计模式,并且将这些模式集成在框架中,这样无论你是架构师或者是开发者都可以很方便的将这些“最佳实践”集成到你的应用中。大量使用过Spring框架的组织和机构证明,Spring框架可以创建健壮而且易于维护的应用。这当然是一件非常好的事情(Very Good Thing Indeed)。