用 Eclipse 和 DB2 Express-C 研究 Spring 2 框架和 Java 持久性 API
developerWorks
Spring 2 框架操作概述
这一节介绍 Spring 2 框架,简要说明了它在常规服务器应用程序开发中的优势。
用 Spring 构建应用程序
从传统 API 的意义上来说,Spring 并不是编程框架。多数情况下,框架由 API 和可以在应用程序中使用的代码主干的集合组成。
Spring 2 被设计成非侵入的。实际上,它允许您编写对象和业务逻辑,就像 Spring 不存在一样。在编写和测试这些对象之后,可以添加 Spring 2 支持特性。在某些情况下,添加这些特性时甚至不需要重新编译源代码。
例如,可以先创建和测试一个 Java employee 对象,然后添加 Spring 2 支持,把对象的实例保存到关系数据库中。也可以先编写更新银行账户的代码,然后应用 Spring 2 的事务功能来确保数据的完整性。
图 1 显示了典型的基于 Web 的服务器应用程序。用户通过用户界面与应用程序交互。应用程序逻辑作为一组业务对象上的操作来执行,构成应用程序的域模型。业务对象通常由保存在关系数据库中的数据支持。
图 1. 典型的基于 Web 的应用程序的架构
如果要从头开发这个应用程序,需要构建图 1 中的每个组件,并编写定制代码来实现对数据库的访问。
在使用 Spring 构建应用程序时,可首先关注完善域模型。可以用简单的 Java POJO 为系统中的对象建模,并把系统中的服务定义成标准的 Java 接口。这样的设计使您可以独立于 Spring 或者其他框架/库来创建和测试域模型。
然后即可把额外的 Spring 特性应用到应用程序,以测试过的域模型为基础。例如,可以用 Spring 的 JPA 支持添加对象持久性 —— 把数据保存到关系数据库和从关系数据库检索数据的能力。
装入时增强
Spring 框架通过在类装入的时候提供附加价值来保证非侵入性。在正常运行 Java 应用程序时,JVM 只在需要类时才通过一组类装入器装入类。这是非常透明的,通常在不知觉的情况下发生。对于一定复杂的软件,如 Eclipse IDE,可以这样装入数千个类。使用 Spring 框架,通过告诉 Spring 引擎(也叫作 Spring 容器)您的类如何搭配在一起、要给这些类添加什么特性,对框架进行编程。Spring 引擎根据您的调配来构建类。图 2 以图表的方式显示了这个过程:
图 2. Spring 框架操作
图 2 显示出:因为 Spring 引擎拥有对类的低级访问,所以可以根据特定的配置,用额外特性增强它们。图 2 还显示了一种可以向 Spring 引擎提供指令的机制。典型情况下,这些指令以 XML bean 描述符文件的形式存在,在某些情况下,也可能以 Java 5 注释的形式存在于源代码内。
例如,可以创建代表员工的简单 Java 对象,然后让 Spring 引擎增强这些类,使得这些对象可以动态地保存到关系数据库表中,或从关系数据库表检索这些对象。本教程将介绍如何实现这些目的。
经典 API 支持
除了类装入时增强,Spring 2 还提供了经典 API 支持,以封装复杂和烦琐的操作。图 3 显示了这份教程的示例应用程序使用的 Spring 支持库。请对比图 3 和 图 1:
图 3. Spring 2 增加的价值
可以把 Spring 2 的 JPA 支持与 Spring DAO API 结合使用,简化对关系数据库的访问。将用 Spring MVC 轻松地为应用程序添加基于 Web 的用户界面。
fig01.gif fig02.gif fig03.gif 2008-03-05_112200.gif