首页>参考读物>计算机科学与技术>软件与程序设计

Spring框架高级编程
作者 : Rod Johnson, Juergen Hoeller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu
译者 : 蒋培
出版日期 : 2006-05-22
ISBN : 7-111-18638-9
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 471
开本 : 16开
原书名 : Professional Java Development with the Spring Framework
原出版社: Wrox
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

Spring框架是主要的开源应用程序开发框架,它使得Java/J2EE开发更容易、效率更高。本书不仅向读者展示了Spring能做什么,而且揭示了Spring完成这些功能的原理,解释其功能和动机,以帮助读者使用该框架的所有部分来开发成功的应用程序。
  本书涵盖Spring的所有特性,并且演示了如何将其构成一个连贯的整体,帮助读者理解Spring方法的基本原理、何时使用Spring以及如何效仿最佳实践。所有这些都以完整的样本应用程序来举例说明。读完本书,读者将能够有效地在各种应用中(从简单的Web应用程序到复杂的企业级应用程序)使用Spring。

本书主要内容:
  ●控制反转的核心容器以及依赖注入的概念
  ●Spring的面向方面编程(AOP)框架以及AOP在J2EE开发中的重要性
  ●如何有效地使用Spring的编程式和声明式事务管理服务
  ●使用Spring的JDBC功能性、iBATIS SQL
  ●Maps、Hibernate和其他O/R映射框架访问数据的方式
  ●访问和实现EJB的Spring服务

相关图书列表:
  ●Java 2入门经典:JDK5   书号:7-111-18089-5 定价:118.00元
  ●Java编程思想(第3版)  书号:7-111-16220-X 定价:95.00元(1CD)
  ●Java 2核心技术 卷Ⅰ:基础知识(原书第7版) 书号:7-111-18523-4   定价:88.00元
  ●Java 2核心技术 卷Ⅱ:高级特性(原书第7版)书号:7-111-17901-3   定价:108.00元
  ●Eclipse精粹  书号:7-111-18273-1   定价:28.00元

图书特色

图书前言

Spring框架是一个主要的开源应用程序开发框架,它可以使Java/J2EE开发变得更容易,效率更高。
  Spring提供的服务可用于各种环境,从applet和独立客户端到运行于简单servlet引擎中的Web应用程序,再到运行于完全成熟的J2EE应用程序服务器中的复杂的企业级应用程序。Spring给出了一个POJO编程模型,把代码与其环境分离开来,在遇到变化时抵御风险。Spring运行于JDK 13及其更高版本,如果有JDK 14和15的话,则能够充分利用它们的特性。Spring的J2EE服务运行在J2EE 12及更高版本之上。
  本书将指导读者如何使用Spring框架的所有主要部分来帮助开发成功的应用程序。你不仅会学到Spring能够做什么,而且还会知道Spring框架完成这些功能的原理。读者在使用该框架的时候,不仅会获得最佳实践,而且会看到一个完整的样本应用程序示例。

本书的读者对象
  本书是写给想要深入学习Spring框架的Java/J2EE体系结构设计人员和开发人员的,可帮助他们将Spring框架有效地应用于从简单的Web应用程序到复杂的企业级应用程序。
  如果你是Spring新手,仍然能够读完本书。但是,书中关于高级主题的讨论对有经验的Spring用户如何有效地使用Spring会更有帮助,在使用Spring开发应用程序的时候,或许应该把本书摆在桌上,以备随时参考。

本书的目标
  本书覆盖了Spring框架的所有主要部分,解释框架的功能和实现这些功能的原因,旨在训练读者使用Spring框架实现高级应用程序的能力。

本书的内容
  本书覆盖了Spring 12的大部分功能集。你将会学到:
  ■ Spring提供了什么。Spring有很大的特性集:通过这些特性指导,并且演示它们如何形成一个统一的整体。
  ■ Spring实现这些特性的原因。讨论了许多Spring特性背后的动机,以及Spring方法的基本原理。
  ■ 何时使用Spring的特性,以及使用Spring的最佳实践。
  我们讨论了Spring的下列领域,并提供了把Spring功能加入到上下文中所需的背景。
  ■ 作为基础核心的控制反转容器和依赖注入(Dependency Injection)的概念。Spring的轻量级容器(lightweight container)提供了完善的配置管理,以及能够支持其他服务的灵活构架。
  ■ Spring的面向方面编程(AspectOriented Programming,AOP)框架和为什么AOP在J2EE开发中十分重要。连同Spring的依赖注入能力一起,Spring AOP提供了一个POJO编程模型,其中的应用程序代码对Spring API的依赖最小,即使在它享受Spring服务的时候。
  ■ Spring是如何对J2EE服务进行抽象的及其达成的目标。
  ■ 事务管理。包括核心概念、Spring的编程化和声明性事务管理服务,以及如何有效地使用它们。
  ■ 使用Spring的数据访问。将会看到Spring如何在各种常用的数据访问技术之上提供完善的、一致的抽象;将详细了解如何使用Spring的JDBC功能、iBATIS SQL Maps和Hibernate O/R映射框架来访问数据;将在概念上牢固理解Spring的数据访问,它可用于其他支持的持久性API,比如TopLink。
  ■ Spring的MVC Web框架。书中有3章内容是:关于Spring MVC框架动机的深入信息;如何与其他常用的Web应用程序框架(比如Struts)比较;如何将其用于从基本的到高级的情形中;以及如何使用Spring MVC来生成定制的内容类型。
  ■ 用于揭示和访问远程服务的Spring服务。Spring提供了独特的远程处理框架,可运行于各种协议之上,但是完全是基于POJO模型的。
  ■ 用于访问和实现EJB的Spring服务。
  ■ 与JMS有关的Spring服务。
  ■ Spring与开源的Quartz调度器以及其他常用的开源和商用软件的集成。
  ■ 通过样本应用程序,了解如何在完整的应用程序的设计和实现中使用Spring。
  ■ Spring应用程序的有效的测试策略。完善的依赖注入容器的主要优点是它可以有效地对应用程序代码进行单元测试;通过提供强大的、同样不需要容器的集成测试功能,Spring又向前进了一步,极大地加快了开发—测试周期的速度。
  贯穿全书,我们都讨论了最佳实践。像Spring这样完善的框架,必然允许用多个方法来实现同一个目的;关于哪种方法最优,我们会尝试提供指导。
  我们还将帮助读者理解Spring如何提供一个清晰的、分层的体系结构的基础,以及如何适当地使用Spring来促进好的OO设计和体系结构实践。

预备知识
  本书读者应该具有核心功能(比如JDBC)的工作知识。与J2EE主题(比如EJB和JMS)相关的章节应该具备这些领域的基础。不过,我们在适当的位置提供了进一步阅读的建议,因此如果不能确定你的知识是否够用,现在也不必太担心。
  我们假设读者具有OO设计和Java语言功能方面的牢固知识,包括反射、内部类和动态代理。
  现有的Spring框架知识是不需要的。
  我们假设读者具有SQL和关系型数据库概念的基本知识。
理解对象关系映射(object relational mapping,ORM)是有帮助的,但并非必要。
  如果读者已经用过MVC Web框架,比如Struts,读者或许会更快地领会Web内容。不过,本书是以MVC Web框架的概念来展开对Spring MVC的讨论。

推荐读物
  贯穿本书始终的是,我们都推荐了更进一步的阅读资料,以帮助读者更深入领会一些对于Spring开发很重要的概念,比如面向方面的编程(AspectOriented programming,AOP)。
  阅读《J2EE without EJB》(Johnson/Hoeller,Wrox,2004)一书是有帮助的,该书详细讨论了轻量级容器(比如Spring)的体系结构的基本原理。但是,本书不完全是那本书的续集,其本身是完全可以理解的。
  有许多在线的Spring框架资源。下列资源一定对读者特别有帮助。
  ■ Spring主页(wwwspringframeworkorg)是大部分Spring相关信息的入口,包括参考文档,提供下载服务。
  ■ Spring论坛(forumspringframeworkorg)是咨询Spring问题的地方。Spring社区通常是非常热情和善于提供帮助的。
使用本书的前提
  为了运行样本应用程序和例子,需要:
  ■ Spring框架12版或者更高版本。
  ■ J2EE Web容器或/和应用程序服务器。在只需要Web容器的地方我们使用Tomcat 5,而在需要应用程序服务器的地方使用的是WebLogic 81。但是,Spring是为应用程序服务器之间的可移植性而设计的,我们还在其他产品上测试了代码。因此,不需要使用任何特定的服务器产品,而是使用你最熟悉和最舒服的任何产品。
  ■ 关系型数据库和适当的JDBC驱动程序。读者应该能够相当容易地修改DDL,使其与你选择的数据库合作。
  ■ Hibernate O/R映射框架30 版,可以从wwwhibernateorg得到。
  ■ 各种第三方库,包括Jakarta Commons Logging。必要的JAR文件已经包括在完整的Spring版本中;参见Spring的文档以了解其细节。
  ■ 完美地与IDE集成的JUnit测试工具。
  ■ 常用的Jakarta Ant组建工具。
  所有这些软件对开发者使用都是开源的或者免费的。
  我们建议使用具有重构的良好的Java IDE,比如Eclipse或者IntelliJ IDEA。这样的工具或者与提供编码辅助的有效的XML编辑器一起发布,或者可以很容易地与之集成。在编辑Spring XML Bean定义文档和其他XML产物(比如Hibernate映射文件、iBATIS SQL Maps定义文件和J2EE部署描述符)时,这是很有帮助的,应该不再需要完全手工编辑XML内容。

样本应用程序
  本书的样本应用程序是一个在线票务应用程序——与关系型数据库一起工作的Web应用程序。该应用程序使用JSP生成Web内容;使用Spring的MVC Web框架实现Web层;使用Spring来配置中间层对象,并且使它们成为事务性的;以及混合使用Hibernate和JDBC来访问和更新关系型数据。我们使用Spring的数据访问抽象把Hibernate的使用隐藏在数据访问接口的可移植层后面。我们已经用选择的常用关系型数据库(包括MySQL和Oracle)进行了测试。
  该应用程序可以运行在Web容器或者应用程序服务器上,使用局部或者全局事务管理。
  附录A中讨论了样本应用程序的需求;第15章讨论了其实现。
  该问题域首先用于《Expert OneonOne J2EE Design and Development》一书的样本应用程序。本书中已经重写了该应用程序,使其符合目前的Spring功能集以及使用Spring的J2EE应用程序的最佳实践上的目前观点。如果读者有先前那本书,会发现有趣的对照。过去的两三年内,Java框架领域已经有了很大进展,因此最佳实践也发生了巨大变化(不仅仅涉及Spring本身)。

排版约定
  为了让读者获得最佳阅读效果,本书对文字编排做了一些约定。
  当前讨论的技巧、提示、诀窍和旁白是缩进的,并且使用楷体字。
  关于文本的风格:
  ■ 当介绍重要术语时,使用楷体字。
  ■ 当表示组合按键时,用Ctrl+A的方式表示键盘组合。
  ■ 文中的代码用如下字体:persistence.properties
  ■ 我们用两种方式给出了代码:
  在代码例子中,我们用灰色阴影突出显示新的代码和重要的代码段。没有使用灰色阴影突出显示的代码段表示在当前上下文中是不太重要的,或者已经在前面显示过。

源代码
  在使用本书中的示例时,读者可以手工输入所有代码,也可直接使用本书附带的源代码文件。本书中使用的所有源代码都可以在wwwwroxcom下载。一旦登录该网站,只需查找本书书名(通过使用Search框,或者使用书名列表),并且单击详细内容中的下载代码(Download Code)链接,即可得到本书的所有源代码。
  由于许多书的书名与本书雷同,最快捷的方法是利用ISBN搜索,本书(这里指本书英文版——编辑注)的ISBN是0764574833。
  一旦下载了这些代码,读者只需使用最习惯的压缩工具解压即可。此外,读者还可以访问Wrox网站代码下载网页(wwwwroxcom/dynamic/books/downloadaspx)或者华章网站(wwwhzbookcom),可以得到本书的相关源代码。

勘误
  尽管我们竭尽所能力争在文字和代码中不出现错误。但是,人非圣贤,错误在所难免。如果读者在书中发现了错误(比如拼写错误或者错误的代码),希望能及时反馈给我们,从而可以让更多的读者在遇到同样的错误时不会耗费太多时间,同时也有利于提高图书质量。对此我们深表谢意。
  要查看勘误页面,请先登录wwwwroxcom,使用Search框或者书名列表找到本书书名。然后,在本书的details页面上,单击Book Errata按钮。在该页上,可以看到本书已经提交的,以及由Wrox编辑张贴的所有勘误,包括每本书勘误链接的完整书籍列表也可以在wwwwroxcom/miscpages/booklistshtml上找到。
  如果不想把“你的”错误放到Book Errata页面上,可以到wwwwroxcom/contact/techsupportshtml网页,填写那里的表单,把你找到的错误发送给我们。我们将检查该信息,如果正确的话,把消息张贴到本书的勘误页面,并且在本书的后续版本中修改这个错误。

p2pwroxcom
  若想与作者和其他读者讨论有关技术问题,可加入P2P论坛(p2pwroxcom)。该论坛是一个基于Web的系统,读者可就Wrox书籍相关的消息和相关技术发表自己的见解,也可与其他读者和技术人员进行交流。该论坛提供了邮件订阅功能,读者可选择感兴趣的话题,如果论坛中新发布了相关消息,会通过电子邮件把这些发送给你。Wrox图书的作者、编辑、其他业界专家以及你的同类读者都会出现在这些论坛上。
  在http://p2pwroxcom上,可以找到许多不同的论坛。这些论坛不仅可在阅读本书时帮助你,而且在开发你自己的应用程序时也会有所帮助。加入这些论坛,只要如下这些步骤:
  1)登录p2pwroxcom,并且单击Register按钮。
  2)阅读使用条款,并且单击Agree按钮。
  3)填写加入论坛必需的个人信息,选填愿意公布的可选信息,然后单击Submit按钮。
  4)你的Email信箱中将收到一封确认函,按照上面的要求确认注册即可完成加入过程。
  阅读论坛中的内容不用注册,但是发布内容则必须注册。
  一旦注册成功,读者即可发表自己的帖子或者对其他发帖人回帖。可以随时在Web上阅读消息。如果想把某个特定论坛的新消息发送到你的邮箱,可按照论坛列表中的论坛名字,单击该论坛图标上的Subscribe。
  关于如何使用Wrox P2P的更多信息,请阅读P2P FAQ,以了解关于论坛软件如何使用的问题的解答,以及P2P和Wrox书籍特定的许多常见问题。要阅读FAQ,可单击任何P2P上的FAQ链接。


作者简介
  Rod Johnson是Spring框架的创始人,并且是Java和J2EE领域的著名专家。
  Rod获悉尼大学博士学位。他具有C/C++开发背景,从Java和J2EE发布以来就作为开发者、体系结构设计者和顾问涉足了Java和J2EE领域。
  他撰写了两本最普及并最有影响力的J2EE书籍:《Expert OneonOne J2EE Design and Development》(Wrox,2002),和《J2EE without EJB》(Wrox,2004,与Juergen Hoeller合著)。这两本书在“敏捷”J2EE的兴起和改变过度复杂的传统J2EE体系结构方面都起了重要作用。
  Rod是Spring框架的共同领导之一。他的发言很受欢迎,并且经常出现在美国、欧洲和亚洲举行的Java重要活动中。他是一些JSR的专家组的成员,为Java社区发展计划(Java Community Process,JCP)服务。
  他还具有在银行和金融、保险、软件、媒体等领域从事顾问的广泛经验。他是Interface21(www interface21 com)的CEO,Interface21是一家致力于提供专家级J2EE和Spring框架服务的咨询公司。他积极参与客户项目和Spring开发。
  献给Kerry。
  Juergen Hoeller是Interface21的共同创始人,该公司从源头提供商业性Spring服务。他是Spring开发的主要驱动者,并且从Spring一发布开始就担任其发布经理。在该项目中,他负责多方面的开发内容,从核心容器到事务管理、数据访问和轻量级远程处理。
  Juergen获林茨大学计算机科学硕士学位,专攻Java、OO建模和软件工程。他是《Expert OneonOne J2EE Development without EJB》(Wiley,2004)一书的合著者,并且经常参加各种会议和活动。他还活跃于许多社区论坛中,其中包括TheServerSide。
  致Eva,感谢她始终如一的关爱和支持,感谢她理解在Spring世界中没有工作时间和休闲时间之分。
  Alef Arendsen就读于乌得勒支大学,学习计算机科学。随后,也是在乌得勒支,Alef创办了他的第一家公司。后来发现公司没有挑战性,Alef转而就职于SmartHaven(一家总部设在阿姆斯特丹的风险投资公司),为知识管理应用程序提供J2EE组件。他负责使开发过程合理化和部分组件基础设施的设计。2002年初,Alef和Joost van de Wijgerd一起创立了提供J2EE开发服务的软件公司JTeam。作为Spring的核心人物之一,Alef现在是Interface21的顾问,与此同时,他继续参与JTeam的工作。他频繁地在各种公众大会发言。读者可以通过电子邮件alef@interface21.com和他联系,还可以在http://blogarendsennet上阅读他的博客。
  致Mas,我的侄子,他时常逗我开心,并且使我想起工作之外还有其他事情。
Thomas Risberg是就职于TargetrRx的数据库开发人员。TargetrRx是一家药物市场研究公司,位于宾夕法尼亚州的Horsham。他有多年与大型和小型组织一起开发各种数据库相关项目的经验,从简单的数据登录程序到大型的数据仓库实现都有。Thomas是有创新精神的COBOL程序员,经由Xbase、Visual Basic和PL/SQL转到了Java。他做了几年的Oracle DBA,但是最终认识到软件开发才真正是他的心之所在。
  Thomas持有瑞典的斯德哥尔摩大学信息处理专业的学士学位。他是认证的Oracle专业DBA,以及Sun认证的Java程序员和J2EE体系结构设计者。
  Thomas 2003年初加入Spring框架开发团队,主要参与JDBC层的开发。除计算机以外,他的兴趣是足球、摄影和旅行。
  Colin Sampaleanu有几乎长达20年的丰富多彩的职业生涯(在孩童时期鼓捣计算机和软件之后)。其经历包括管理他自己的零售软件公司并为它从事开发;C++ shrinkwrap和企业软件空间工作的若干年,从Java语言开发早期就开始使用Java,从20世纪90年代后期完全专注于企业级Java等。
  Colin现在是Interface21的一个主要合伙人。Interface21专门从事Spring的培训、咨询和支持。在加入Interface21之前,Colin是一家软件孵化器/VC的首席体系结构设计人员。
  作为核心的Spring开发者和Interface21负责人,Colin花费大量时间来讲述和撰写文章说明Spring的好处,以及推广敏捷软件开发的体系结构和方法。
  致Nina,感谢她对我始终如一的关爱和支持,感谢她理解如下事实:不管我们的主观意愿多么好,在这个业界,朝九晚五通常只不过是一个工作日的上半天。致Alec和Maia,感谢他们的率真和快乐,是他们让我想到生命中除了计算机以外还有其他的事情。



致谢
  Rod Johnson在本书写作过程中,许多人提供了帮助。我尤其要感谢我的合著者,他们每个人都扮演了重要角色,从而确保我们的书能够覆盖Spring的各个方面。
  感谢Spring的Acegi Security的首席开发者Ben Alex,他贡献了Spring安全方面的大部分素材。Mark Pollack是Spring开发者和SpringNET的领导,也承蒙他贡献了与Spring JMS服务有关的素材。Dmitriy Kopylenko,也是一位Spring开发者,他帮助完成了AOP一章的图表和范例。
  最后,感谢评审们(特别是Peter den Haan和Aleksander Seovic)对细节的关注并提出了许多宝贵的建议。
  Juergen Hoeller我感谢我的合著者、我们的评审以及我们的编辑;与你们一起工作是一件乐事。Peter den Haan对各章的评阅非常仔细,对他要特别说一声谢谢。最后,我向整个Spring社区致以我的谢意:没有你们的积极参与,Spring项目就不会有今天。
  A. Arendsen我感谢JTeam所有同事的支持。特别感谢Bram Smeets和Arjen Poutsma为各种主题提供了宝贵的内容。我还非常感谢Joost,就是他最初和我一起创办了JTeam。没有他,我无法挤出时间撰写本书。我还要向Goof Kerling表达我的谢意,他教给我编程的知识和正确编程的方法,教我去理解和感悟生活,这一切使我获益良多。感谢Lars每个月为我做一次饭,提供一个地方让我待到我的房子完工,并且偶尔和我一起喝啤酒。我也感谢我家人的支持,感谢技术编辑对内容的全面审核以及指出荷兰语不是世界上使用最广泛的语言。
  Thomas Risberg我感谢整个Spring社区——没有你们,Spring项目和本书都不会有今天。
  Colin Sampaleanu我感谢我的合著者、Interface21的搭档和Spring团队为工作立下了如此高的标准。与你们一起工作永远是一件乐事。我感谢多年以来的许多同事,他们对软件开发艺术的热情帮助我也保持高度的兴趣。我还要感谢我的技术评审Peter den Haan、Qi Zhang和Jim Leask,他们提供了非常宝贵的反馈意见。

作者简介

Rod Johnson, Juergen Hoeller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu:暂无简介

译者简介

蒋培:暂无简介

译者序

Spring作为从Rod Johnson所著的《Expert OneonOne J2EE Design and Development》一书成功进化而来的J2EE开发框架,从一开始就保持了一致的体系结构和编程模型,在其发布后的一年多时间里,迅速成为各种Java/J2EE论坛中频繁讨论的话题,也被广泛应用到各种大小项目中,成为J2EE开发框架中的新宠。
  本书可以称为上一本书的续集,其概念、内容、示例等方面都具有一定的延续性。本书尽管没有像Rod Johnson另外两本畅销的J2EE书籍——《Expert OneonOne J2EE Design and Development》和《J2EE without EJB》中那样安排了那么多理论分析和讨论,但是更加针对Spring的实际开发指导,提供了详尽的案例和代码。随着Spring的普及,市面上已经有了很多关于Spring的书籍,不过人们一直期待一本全面而深入覆盖Spring所有部分的开发指南,现在终于盼到了,本书就是!
  当然,本书绝不仅仅是一本开发指南,它详细解释了Spring体系结构的内部机制和实现过程,让读者不仅知其然,而且知其所以然。它对Spring引以为傲的控制反转和依赖注入概念进行了深入剖析,分别用简单、实用的例子讲述了不同形式的注入方式,比如设置器注入、构造函数注入和方法注入。本书还详细讲解了Spring的AOP框架,用大量代码和图示深入浅出地叙述了AOP框架中的各种概念及其应用,以及如何与其他AOP框架进行集成。另外,针对Spring鼎足而立的“第三足”——一致性服务抽象,本书也花费了大量篇幅予以叙述。当然,除了这些之外,本书还阐述了许多在其他Spring著作中未曾出现或者语焉不详的内容,包括JDBC框架、事务与资源管理、O/R映射、Web MVC框架和Acegi Security系统等。本书不仅突出了Spring框架的重点,还涵盖了在Spring框架开发中所涉及的各个方面。尤为可贵的是,本书使用了一个完整的、接近于实际应用的样本应用程序贯穿全书始终,使读者在了解和学习Spring基本概念的过程中能够切实感受到实际开发的要求和注意事项,增加读者的实战经验。对于Spring开发人员,本书是他们不可多得的案头参考书。建议读者在阅读本书时,先浏览一下前言的内容或许能够更好地理解书中所使用的例子。
  Rod Johnson由于其所著的《Expert OneonOne J2EE Design and Development》和《J2EE without EJB》这两本书而在Java/J2EE业界名声大噪。在这些书中,他大胆质疑甚至挑战传统的J2EE开发模式,积极倡导轻量级框架,引领敏捷软件开发潮流。其实,Rod Johnson不仅是一位高素质的Java书籍的作者,还是一位音乐学博士;不仅领先开发了Spring框架,还创建了Interface21公司,负责Spring框架的推广、培训和咨询。本次更是亲率Spring框架的核心开发团队,倾力撰写了这本Spring框架的开发宝典。
  作为译者,本人首先感谢机械工业出版社华章分社出版这本高质量技术书籍的中文版,本书的英文版在Amazon网站获得的好评如潮,被读者评为四星半,表明了读者对该书的认可。还要感谢各位编审人员,是他们一丝不苟和兢兢业业的工作才保证了本书的出版质量。最后,对蒋坚松教授在翻译过程所给予的悉心指导,以及吴辉老师对译稿的编辑和审阅一并表示感谢。
  由于时间紧迫,并限于译者水平,书中难免有疏漏之处,望各位读者和专家批评指正。

蒋培
于上海

图书目录

第1章Spring框架概述1
11为什么要Spring1
111J2EE传统方式的问题1
112轻量级框架3
113进入Spring3
12Spring的价值4
13上下文中的Spring6
131技术6
132技巧12
133与其他框架的关系13
14使用Spring构造应用程序15
141结构层次图15
142持久性和集成17
143业务服务对象19
144表示19
15前景21
151发布日程21
152Java和J2EE的进展21
153技术趋势22
154标准与源码公开22
16Spring项目和社区23
161历史23
162模块摘要24
163支持的环境26
17小结27
第2章Bean工厂与应用程序上下文28
21控制反转和依赖注入28
211不同形式的依赖注入31
212在设置器注入和构造函数注入之间决定33
22容器34
221Bean工厂34
222应用程序上下文35
223启动容器36
224使用来自工厂的Bean38
225XML Bean配置38
226基本的Bean定义39
227指定Bean的依赖41
228管理Bean生命周期47
229对服务和资源访问的抽象49
2210重用Bean定义53
2211使用后置处理器处理定制的Bean和容器55
23小结60
第3章高级容器概念62
31低层资源的抽象62
311应用程序上下文作为ResourceLoader63
312应用程序上下文作为消息源65
32应用程序事件66
33管理容器68
331ApplicationContext构造函数中的资源位置路径68
332应用程序上下文的声明式用法69
333将容器定义划分到多个文件71
334处理组件的策略72
335用于访问容器的单态74
34一些方便的工厂Bean74
341PropertyPathFactoryBean75
342FieldRetrievingFactoryBean76
343MethodInvokingFactoryBean76
35Spring提供的属性编辑器77
36测试策略77
361单元测试77
362使用Spring容器的测试80
37XML的替代品82
371来自Properties文件的定义82
372编程式Bean定义83
373其他格式83
38参考文献84
39小结84
第4章Spring与AOP85
41目标85
42假设86
43例子86
44Spring的AOP框架89
441拦截器链89
442赞成与反对89
443通知90
444切点94
445通知器(advisor)98
446与Spring IoC容器的集成99
447在运行时间检验并处理代理状态109
448编程式的代理创建109
45使用Spring的AOP框架的高级特性110
451TargetSources110
452及早终止拦截器链115
453使用介绍115
454暴露当前的代理117
455暴露当前的MethodInvocation117
456理解代理类型118
457调试与测试119
458其他121
46与其他AOP框架集成123
461目标123
462集成AspectJ123
463AspectWerkz126
47参考文献127
48小结127
第5章DAO支持与JDBC框架128
51数据访问对象模式128
52Spring的JDBC框架概述129
521起因:直接使用JDBC的问题130
522Spring可以如何帮助131
523简单的例子131
53建立样本应用程序的数据访问层132
531样本应用程序的数据模型132
532DataSource134
533异常转译135
54使用JdbcTemplate的操作137
541回调方法的使用137
542JdbcTemplate的方便方法138
543使用JdbcTemplate的基本查询138
544使用JdbcTemplate的基本更新139
545JdbcTemplate的高级用法140
546对RowSet的支持141
55使用RDBMS操作类142
551SqlQuery和MappingSqlQuery142
552使用SqlUpdate插入和更新144
553使用UpdatableSqlQuery更新ResultSet145
554生成主键146
555检索数据库生成的键147
556调用存储过程148
56高级概念150
561在应用程序服务器中运行Spring JDBC150
562使用定制的异常转译151
563读写LOB数据153
564批量更新158
565存储过程的高级用法159
57其他的考虑事项163
571性能163
572何时使用JDBC和O/R映射163
573JDBC版本和J2EE版本163
58小结164
第6章事务和资源管理165
61背景165
611什么是事务165
612ACID属性165
613并发控制167
62事务与J2EE167
621局部事务167
622全局/分布式事务167
623事务传播168
624事务划分168
63Spring事务支持的例子168
64Spring的事务抽象介绍170
641事务控制选择的概述170
642事务定义171
643事物状态174
644事务划分策略174
645事物管理策略185
65DataSource声明192
651本地非缓冲192
652本地缓冲193
653JNDI193
654在本地DataSource和JNDI DataSource之间选择194
66小结194
第7章对象/关系映射195
71背景知识195
711基本的O/R映射195
712对象查询语言196
713透明持久性196
714何时选择O/R映射197
72Spring中的O/R映射支持197
721数据访问对象198
722事务管理198
73iBATIS SQL Maps199
731映射文件199
732DAO实现201
733在Spring上下文中设置202
734事务管理203
735iBATIS概要204
74Hibernate205
741映射文件205
742DAO实现206
743Spring上下文中的设置209
744事务管理211
745Open Session in View216
746BLOB/CLOB处理218
747Hibernate:小结220
75JDO221
751持久性对象的生命周期221
752DAO实现222
753在Spring上下文中设置223
754事务管理224
755PersistenceManager的生命周期225
756Open PersistenceManager in View226
757JDO方言227
758JDO:小结228
76其他O/R映射工具229
761Apache OJB229
762TopLink230
763Cayenne231
764JSR220持久性231
77小结231
第8章轻量级远程处理233
81概念和范围233
82一般的配置风格234
83Hessian和Burlap235
831访问一个服务236
832导出一个服务238
84HTTP调用器239
841访问一个服务239
842导出一个服务240
843定制化选项241
85RMI242
851访问一个服务243
852Stub查询策略244
853导出一个服务246
854定制化选项246
855RMIIIOP247
86通过JAXRPC的Web服务247
861访问一个服务248
862导出一个服务250
863定制的类型映射252
87小结253
第9章支持性服务255
91JMS255
911引言255
912Spring的JMS支持的起因256
913通过模板的JMS访问257
914异常处理258
915ConnectionFactory管理259
916消息转换器259
917目的管理260
918事务管理261
919JmsGatewaySupport261
9110前景263
92使用Spring的调度263
921Timer与Quartz263
922Timer263
923Quartz265
93使用Spring发送电子邮件269
931入门指南270
932重用现有的邮件会话271
933使用COS的邮件发送271
934通用的邮件管理器271
94脚本275
941一致性模型275
942其他脚本语言278
95小结279
第10章Spring的Acegi Security系统280
101企业级应用程序的安全选择280
1011典型的需求280
1012Acegi Security简介281
1013Java身份验证和授权服务284
1014Servlet规范286
102Acegi Security的基础287
1021身份验证287
1022存储身份验证对象290
1023授权292
1024域对象实例的安全292
103范例代码295
1031范例介绍295
1032安全所不知道的实现295
1033安全方法298
1034身份验证298
1035授权299
104小结302
第11章Spring与EJB303
111对EJB的需要做出决断303
112访问EJB304
1121样板方法304
1122Spring的方法305
113用Spring实现EJB310
1131无状态会话Bean310
1132有状态会话Bean313
1133消息驱动的Bean314
1134几句题外话:谈谈XDoclet315
114单态容器访问,是好还是坏315
1141ContextSingletonBeanFactoryLocator和SingletonBean FactoryLocator316
1142共享的上下文作为Web应用程序的应用程序上下文的双亲318
1143使用来自EJB的共享的上下文321
115测试关注点321
1151在POJO委托中实现业务功能321
1152使用模仿的EJB容器321
1153应用程序服务器内部的集成测试322
116小结323
第12章Web MVC框架324
121简单的例子324
122一般的体系结构326
1221Web MVC概念326
1222使用分发器和控制器的通用Web MVC327
1223好的Web MVC框架的需求327
1224Spring的Web MVC的等价物328
123基础设施组件330
1231DispatcherServlet330
1232WebApplicationContext333
124处理请求有关的工作流334
125Spring MVC Web应用程序的一般布局336
126HandlerMapping337
1261BeanNameUrlHandlerMapping338
1262SimpleUrlHandlerMapping338
1263CommonsPathMapUrlHandlerMapping339
1264多个HandlerMapping340
127HandlerExecutionChain和拦截器341
1271WebContentInterceptor342
1272UserRoleAuthorization Interceptor343
1273Spring MVC提供的其他处理器拦截器343
128处理器及其适配器343
129ModelAndView和ViewResolvers343
1291UrlBasedViewResolver344
1292BeanNameViewResolver和XmlViewResolver344
1293ResourceBundleViewResolver345
1294视图解析器链接345
1210地区值的改变和解析347
1211HandlerExceptionResolvers348
1212控制器350
12121WebContentGenerator350
12122AbstractController350
12123UrlFilenameViewController351
12124ParameterizableView Controller351
12125MultiActionController352
1213数据绑定352
1214使用控制器的实际例子354
12141使用AbstractController查看演出列表354
12142预订356
1215向导功能362
12151基本配置362
12152模板方法363
12153向导流程363
12154页面改变、编号和其他动作363
1216扩展Spring处理器的基础设施365
1217上传文件365
12171配置多部分解析器365
12172创建表单来上传文件366
12173处理上传的数据366
1218测试控制器367
12181无须应用程序上下文的测试368
12182使用模仿对象的更广泛测试369
12183使用完全的应用程序上下文测试370
12184测试Web应用程序的其他方法370
1219小结371
第13章Web视图技术372
131一个例子372
1311通用配置373
1312JSP373
1313FreeMarker373
1314使用iText生成PDF374
132选择技术时的注意事项375
133视图对象和模型375
134AbstractView提供的特性376
1341使用RedirectView发布新的请求377
1342使用视图前缀发布转向或者重定向378
135JSP379
1351配置应用程序以使用JSP379
1352使用定制标记创建表单380
1353使用标记文件创建可重用的元素385
136Velocity和FreeMarker385
1361配置视图解析器386
1362使用表单简化宏388
137Tiles390
138基于XML和XSLT的视图393
139Excel和基于其他文档的视图394
1391从表演列表生成Excel文件394
1392以模板作为Excel文件的基础395
1393基于其他文档的视图396
1394使用HandlerInterceptor区分HTML和Excel396
1310实现定制视图398
13101View和AbstractView398
13102实现从数据对象生成XML的视图398
13103实现定制视图时的注意事项400
1311小结400
第14章与其他Web框架集成401
141选择MVC框架时的注意事项401 比较传统的Web MVC框架401
142与Spring集成:核心概念408
143WebWork 集成410 设置ObjectFactory410
144Struts集成411
1441使用ActionSupport412
1442使用DelegationRequestProcessor和DelegationActionProxy413
1443使用自动装配的基本动作415
145Tapestry集成416
1451为Tapestry准备Bean416
1452页面类417
1453页面定义417
1454页面模板418
1455Tapestry集成的最终思考420
146JSF集成420
147小结421
第15章样本应用程序422
151服务器技术的选择422
152应用层422
153持久性层423
1531数据模型423
1532域对象模型425
1533对象/关系映射426
1534DAO实现429
1535数据访问上下文430
154业务服务层431
1541服务431
1542应用程序上下文432
155Web层433
1551应用程序流程434
1552通过webxml配置应用程序434
1553Web控制器435
1554视图技术437
156与J2EE设计和开发实现的比较438
1561更简单的技术438
1562数据库变化438
157服务器配置439
1571MySQL439
1572Tomcat439
158构建和部署440
1581创建和载入数据库表440
1582构建应用程序并部署到Tomcat服务器440
159小结440
第16章结论441
161Spring解决的问题441
162Spring解决方案441
163Spring开发的指导方针443
1631技术选择443
1632层与层444
1633构造应用程序448
1634测试应用程序451
164相关项目452
1641Spring的Acegi Security452
1642其他项目452
165非J2EE环境中的Spring453
166发现更多454
1661书籍和文章454
1662在线资源454
1663样本应用程序454
167前景455
附录A样本应用程序的需求457
A1概述457
A2用户群体457
A21公众Internet用户457
A22售票处用户458
A23系统管理员458
A3假设458
A4范围限制459
A5交付时间表459
A6Internet用户界面459
A61基本工作流459
A62错误处理460
A63应用程序屏幕460
A7非功能性需求469
A8硬件和软件环境470

教学资源推荐
作者: 王珊珊 臧洌 张志航 编著
作者: [美] 艾伦 A. A. 多诺万(Alan A. A. Donovan),布莱恩 W. 柯尼汉(Brian W. Kernighan)著
作者: [美]本贾尼·斯特劳斯特卢普(Bjarne Stroustrup) 著
参考读物推荐
作者: (希)Diomidis Spinellis
作者: Cay S.Horstmann, Gary Cornell