Spring 2.0.1与BEA WebLogic Server 9.2的集成(1)


编辑注:Spring 2.0.2软件包于本文完成后已经发布了,现在可以从这里下载

摘要

一年多以前,我们讲述过 Spring 1.2.x与WebLogic Server 9.2的集成。其后,我们又验证了Spring和BEA WebLogic Server的更新的版本,一直到WebLogic Server 9.2和Spring 2.0的组合。这些版本表现出在功能性、可用性和性能上的重大飞跃,因此我们决定对文章进行更新以反映这一变化。

BEA WebLogic Server 9.2是Sun Microsystems的Java EE 1.4平台的领先实现。然而,WebLogic Server的核心价值主张则体现在Java EE规范没有覆盖的领域——增强的管理、易用性、高可用性、可伸缩性、可靠性和性能。实际上,WebLogic Server的价值不依赖于任何特定的编程模型,所以它与新也自然适用于新出现的非Java EE的Java编程模型。近年来出现的最令人激动的事物莫过于基于反向控制IoC)的模型,Spring Framework就是它的事实上的实现。本文介绍了Spring 2.0 Framework、WebLogic Server以及这两者的集成的新特性。我们会看到,整体大于部分之和。

文章结构

文章的前两节概述Spring、WebLogic Server和它们各自的特性。如果您熟悉Spring Framework,那么可以跳过第一节。如果您熟悉WebLogic Server,那么可以跳过第二节。本文主要目的是介绍这两种技术的集成,所以本文后续的部分都是讲述这一主题的。首先,我们分析MedRec—WebLogic Server上的一个示例程序——分别以它的原始的Java EE形式和使用Spring Framework重构后的形式。之后,是关于特定的集成点的一些细节。如果您打算在 WebLogic Server上开发Spring应用程序,那么,几乎可以肯定,这些细节会对您有所帮助。如果您只是想有个大致的概念,可以先阅读标题,内容留待以后再看。最后,我们展望了一些正在考虑中的未来开发工作。

Spring简介

本节,我们来简要地概述Spring Framework的特性,包括2.0版以来的一些新特性。

Spring是基于Rod Johnson在 Expert One-on-One J2EE Design and DevelopmentWrox, 2002)公布的代码的一个分层的Java/Java EE应用程序框架。Spring的存在是因为我们相信Java EE应该更容易使用,并且有可能创造更简单的Java EE开发方法而不会牺牲平台性能。

Spring支持灵活的Java EE开发,允许使用Plain Old Java Objects一般称为 POJO)开发Java EE应用程序。

改进的Spring开发体验

Spring在其核心部分提供了一个易于配置、XML驱动的反向控制IoC)容器。IoC基于所谓的“好莱坞原则”:“不要打电话过来,请等通知。”在这种模式中,通过容器而不是直接编程将Java对象间的关系注入应用程序中。有两种注入方式—构造函数注入和setter注入,具体取决于容器是通过其构造函数还是mutator方法将信息注入已创建的Java对象。

在Spring中,注入的属性——或到其他bean的引用——是通过一个XML文件进行配置的,这使得配置轻而易举。它耦合了另外一个AOP框架,允许非侵入性增加诸如事务处理和安全等属性,这意味着开发人员可以专注于创建业务解决方案,而不必忙于复杂的Java EE开发或配置。由于容器是非侵入性的,所以您不必担心业务代码会被特定于供应商此处也包括Spring)的工件所污染。

Spring应用程序组件

如上所述,Spring提供了一个轻量级的容器,用于提供集中式、自动化的配置并连接应用程序对象。它是非侵入性的,能够以一致的和透明的方式通过IoC把一组松耦合的组件POJO)组装成复杂的系统。因为该容器允许首先独立地开发和测试各软件组件,然后在任意环境中Java SE或Java EE)中进行扩展部署,所以它具有灵活性和高利用率,并提高了应用程序的可测试性和可伸缩性.此外,Spring提供了许多其他对开发人员友好的特性,下面我们一一列举:

一个用于事务管理的通用抽象层:支持可插入的事务管理器,使事务划分更轻松,同时无需处理底层的问题。该层中还包括JTA策略和一个JDBC DataSource。相比普通的JTA或EJB CMT,Spring的事务支持不依赖于Java EE环境。考虑到是一个十分灵活的非侵入性解决方案,事务语义通过AOP应用于 POJO,通过XML或Java SE 5注释进行配置。

一个JDBC抽象层:提供了一个有意义的异常层次结构不再从SQLException抽取供应商代码),简化了错误处理,极大地减少了代码编写量。无需为了再次使用JDBC编写另外的finally代码块。面向JDBC的异常遵循Spring的一般DAO异常层次结构。

与业界领先的对象——关系映射解决方案的集成:在资源拥有者、DAO实现支持和事务策略方面。对大量IoC便利特性的一流支持,解决了许多典型的O-R映射集成问题。所有这些都遵循Spring的一般事务和DAO异常层次。而且,Spring 2.0提供了与Java Persistence API (JPA)的完全集成。

AOP功能性:完全集成到Spring配置管理中。您可以对Spring所管理的任何对象启用AOP,增加了声明性事务管理等方面。借助于Spring,您能够拥有没有EJB的声明性事务管理——甚至也可以没有JTA。

一个灵活的MVC Web应用程序框架:构建在核心的Sping功能之上。它是通过策略接口高度可配置的,并且适用多种视图技术,如JSP、Velocity、Tiles、iText和POI。注意,Spring中间层能容易地与基于任何其他Web MVC框架如Struts、WebWork或Tapestry)的Web层组合。

一个用户可扩展的配置层:允许用户在vanilla Spring配置中加入自己定制的XML标签。整个Spring 2.0核心库已经广泛地使用这一功能,提供增强的语法和通用Spring特性的可用性。

异步编程抽象:包括与JMS提供者的框架中立的事务集成的消息驱动POJOMDP);与异步调度机制的集成,如commonj、Java SE并行程序和Quartz;本地事件支持。

所有的Spring功能都可以在任何Java EE服务器上使用,大部分功能可以在非托管环境中使用。Spring的一个重心是支持可重用业务和不依赖于特定的Java EE 服务的数据访问对象。这些对象可以不费事地跨J2EE环境Web或EJB)、独立应用程序和测试环境进行重用。

Spring的分层架构提供了大量灵活性。它的功能都构建在较低的层次上。例如,您可以在不使用MVC框架或没有AOP支持的情况下使用JavaBean配置管理。但是,如果您要使用Web MVC框架或AOP支持,您会发现它们构建在配置框架之上,所以您可以马上用上有关它的知识。


相关内容