Spring 的核心是个轻量级(Lightweight)容器(Container),实现了IoC(Inversion of
Control)模式的容器,基于此核心容器所建立的应用程序,可以达到程序组件的松散耦合(Loose
coupling),让程序组件可以进行测试(Testability),这些特性都使得整个应用程序可以在架构上与维护上都能得到相当程度的简化。
Spring 的核心在档案容量上只有不到 1MB 的大小,而使用 Spring 核心所需要的资源也是很小的,而 Spring 是个非侵入性(Nonintrusive)框架,它的目的之一,是让应用程序不感受到框架的存在,减低应用程序从框架移植时的负担。
Spring 核心本身是个容器,管理对象的生命周期、对象的组态、相依注入等,并可以控制对象在创建时是以 原型(Prototype) 或 单例(Singleton) 的方式来建立。
- IoC(Inversion of Control)
Spring 的核心概念是IoC,更具体而易懂的名词是依赖注入(Dependency Injection),使用 Spring,您不必自己在程序代码中维护对象的依赖关系,只需在组态档中加以设定,Spring 核心容器会自动根据组态将依赖注入指定的对象。
除了这些特性之外,Spring 的目标是实现一个全方位的整合框架,在 Spring 框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring 希望提供 one-stop shop 的框架整合方案。
Spring 最为人重视的另一方面是支持AOP(Aspect-oriented programming),然而 AOP 框架只是
Spring 支援的一个子框架,说 Spring 框架是 AOP 框架并不是一件适当的描述,人们对于新奇的 AOP 关注映射至 Spring
上,使得人们对于 Spring 的关注集中在它的 AOP 框架上,虽然有所误解,但也突显了 Spring 的另一个令人关注的特色。
Spring 提供对持久层的整合,如 JDBC、O/R Mapping工具(Hibernate、iBATIS)、事务处理等。
Spring 也提供 Web 框架的解决方案,但您也可以将自己所熟悉的
Web 框架与 Spring 整合,像是 Struts、Webwork 等,都可以与 Spring 整合而成为适用于自己的解决方案。
对于一些服务,例如 JNDI、Mail、排程、远程等,Spring 不直接提供实作,而是采取抽象层方式进行包装,让这些服务在使用时可以有一致的使用模式且更为方便。