spring 是最受欢迎的企业级 java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 spring 框架来创建性能好、易于测试、可重用的代码。
spring 框架是一个开源的 java 平台,它最初是由 rod johnson 编写的,并且于 2003 年 6 月首次在 apache 2.0 许可下发布。
spring 是轻量级的框架,其基础版本只有 2 mb 左右的大小。
spring 框架的核心特性是可以用于开发任何 java 应用程序,但是在 java ee 平台上构建 web 应用程序是需要扩展的。 spring 框架的目标是使 j2ee 开发变得更容易使用,通过启用基于 pojo 编程模型来促进良好的编程实践。
下面列出的是使用 spring 框架主要的好处:
spring 可以使开发人员使用 pojos 开发企业级的应用程序。只使用 pojos 的好处是你不需要一个 ejb 容器产品,比如一个应用程序服务器,但是你可以选择使用一个健壮的 servlet 容器,比如 tomcat 或者一些商业产品。
spring 在一个单元模式中是有组织的。即使包和类的数量非常大,你只要担心你需要的,而其它的就可以忽略了。
spring 不会让你白费力气做重复工作,它真正的利用了一些现有的技术,像orm 框架、日志框架、jee、quartz 和 jdk 计时器,其他视图技术。
测试一个用 spring 编写的应用程序很容易,因为环境相关的代码被移动到这个框架中。此外,通过使用 javabean-style pojos,它在使用依赖注入注入测试数据时变得更容易。
spring 的 web 框架是一个设计良好的 web mvc 框架,它为比如 structs 或者其他工程上的或者不怎么受欢迎的 web 框架提供了一个很好的供替代的选择。mvc模式导致应用程序的不同方面(输入逻辑,业务逻辑和ui逻辑)分离,同时提供这些元素之间的松散耦合。
spring 对javaee开发中非常难用的一些api(jdbc、javamail、远程调用等),都提供了封装,使这些api应用难度大大降低。
轻量级的 ioc 容器往往是轻量级的,例如,特别是当与 ejb 容器相比的时候。这有利于在内存和 cpu 资源有限的计算机上开发和部署应用程序。
spring 最认同的技术是控制反转的依赖注入(di)模式。控制反转(ioc)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。
当编写一个复杂的 java 应用程序时,应用程序类应该尽可能的独立于其他的 java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。
到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 a 依赖于类 b。现在,让我们看一看第二部分,注入。所有这一切都意味着类 b 将通过 ioc 被注入到类 a 中。
依赖注入可以以向构造函数传递参数的方式发生,或者通过使用 setter 方法 post-construction。由于依赖注入是 spring 框架的核心部分,所以我将在一个单独的章节中利用很好的例子去解释这一概念。
spring 框架的一个关键组件是面向方面的程序设计(aop)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的关于方面的例子,比如日志记录、声明性事务、安全性,和缓存等等。
在 oop 中模块化的关键单元是类,而在 aop 中模块化的关键单元是方面。aop 帮助你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。
spring 框架的 aop 模块提供了面向方面的程序设计实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.net属性的方式合并行为信息到代码中。我将在一个独立的章节中讨论更多关于 spring aop 的概念。