Spring是近年来非常成功的一个Java开发框架. Spring深受Java程序开发人员欢迎的主要原因在于其提供了两个重要的特性:
1) Spring可以用于开发各种类型的应用程序, Web应用开发可以使用Spring,桌面应用开发同样可以使用Spring.
2) Spring提供了一个轻量级(相对于EJB等而言)的开发框架,这个特性来自于其核心理念 - 最小影响 (minimal impact). 基于这个特性,开发人员可以自由地选择和使用合适的开发框架,无论是将Spring引入一个非Spring的应用,还是使用其他的框架来代替 Spring,现有的实现都无需大量的,结构性的变动.
Spring框架的核心概念可以概括为两个术语 - 控制反转(Inverting Control, IoC)和依赖植入(Dependency Injection, DI). 这两个术语虽然在字面表达上有所不同,但在Spring中,其内涵是相同且一致的. 其主要意义在于通过使用外部机制来将程序组件的创建和管理从应用程序本身中剥离出来.
IoC/DI的概念可以说明如下: 当类A需要使用类B提供的方法时,我们说类A依赖于类B. 在传统的开发模式下,类A可以通过new操作符,或使用Factory设计模式来实例化类B ,而在IoC/DI中,类B实例的创建是在程序运行时刻通过一个外部的机制来实现的.
Spring IoC/DI的实现是基于两个基本的Java技术: JavaBean和Interface. JavaBean提供了标准化的机制来实现Java资源的创建和配置,Interface则是设计和实现松耦合的系统中的重要一环.
IoC/DI, JavaBean和Interface三者相辅相成,可以大幅减少应用程序的开发量.
就依赖植入 (DI)而言,Spring不仅仅是一个开发框架,更重要的是其提供了一个容器,其主要功能在于创建对象和其所依赖的对象的实例. EJB容器提供同样的功能用于Persistent Entity Bean的创建,但与EJB相比, 使用Spring可以大大减少代码量. 在Spring DI中,既不用继承特定的父类,也无需遵循特定的命名体系来定义对象的名称,唯一前提是使用JavaBean的命名规范来定义对象属性的名称和存取方法.