前言
致谢
这本书的创作不仅仅是两个人的事情。除了两位作者之外,在各个方面很多人的参与之下才使这本书的诞生成为可能。
首先,我们要感谢Manning出版社的幕后工作人员:发行人Marjan Bace、他的助手Susan
Capparelle、我们的编辑Jackie Carter,还有Denis Dalinnik、Leslie Haimes、Mary
Piergies、Liz Welch、Susan Forsyth 和 Helen
Trimes。我们无法想象还能找到更好更专业的队伍合作。你们在自己的岗位上都做得非常好,并且应该为制作出世界上*好的技术书而得到称赞。
我们还要感谢本书的审阅者:Doug Warren、Muhammad Ashikuzzaman、Ryan
Cox、Mojahedul、Hasanat、Jack Herrington、 Olivier Jolly、William Lopez、Lester
Martin、Dmitri Maximovich、Daniel Miller、Christian Parker、 Matthew
Payne和Norman Richards,谢谢你们贡献了大量时间,提供给我们许多的反馈、批评和灵感,使本书更为完善。特别要感谢Doug
Warren,在本书印刷之前,对原稿进行技术校正。
*后,还要感谢Rod
Johnson和Spring小组的其他人,感谢他们在**线创造了Spring。我们可以很诚实地说,使用Spring真是一件令人愉快的事。你们真是太棒了!
CRAIG WALLS
我想感谢我亲爱的美丽的妻子:Raymie。你是我一生的*爱和*好的朋友,也是我*甜蜜的梦。谢谢你对我的支持和耐心,对于还在进行中的另一个图书项目——我保证马上就会结束了。
我的合著者,Ryan,是他让我开始了解Spring并帮助我整理这本书,把Spring告诉其他所有的人。
对于我在Michaels的小组成员——Ryan、Marianna、Van、Tonji、Jeff、Jim、Don、Carol
和Leida,感谢你们每**都展现了一个***软件开发小组的水平和能力。现在这本书终于完成了,或许我将不用再谢绝这么多午餐邀请了!
感谢我在今年的全国巡回软件研讨会No-Fluff/Just-Stuff上遇到和交谈的朋友和同事:Glenn Vanderburg、Ted
Neward、Bruce Tate、Venkat Subramaniam、Ramnivas Laddad、Dave Thomas、Erik
Hatcher、 Howard Lewis Ship、Neal Ford、Rick Hightower、Ben Galbraith、Stuart
Halloway 和 Matt Raible。感谢Jay Zimmerman一直以来的指导,并在2004年邀请我成为其中一员。
感谢在背后支持我的朋友和邻居:John、Jennifer以及经常为Raymie和我提供比萨饼、电影,还有忙里偷闲的休息的Tobey。
感谢Dick Wolf创办的“法律&秩序”,这个电视节目在我写作的时候提供了大量的背景噪声。
以及其他我在XDoclet in Action中感谢的所有人。
RYAN BREIDENBACH
首先,我要感谢我的妻子Angi。是你无限的耐心和鼓励让我能更加努力。我向你保证,在这本书完成后,你将会看到我更多的笑容和更加畅快的呼吸。
感谢我的女儿Julia,帮助我在脑海中形成写一本书应有的压力。在写作之余,访问一下“Elmo的世界和Jo Jo的马戏团”站点是件愉快的事情。
感谢我的父母,Mark和Lynda,还有我的兄弟Lee,能理解我为何在拜访你们的时候还埋头于我的笔记本。使我在将来的拜访中不会有什么压力。
感谢我的亲家,Stephanie
和George,感谢你们激励的话语,还有偶尔(不,应该是经常)帮助我们照看小孩,使Angi和我有更多自己的时间。
感谢我的那些开发伙伴:Van、Marianna、Tonji和Jerry,让我从你们那里得到很多意见。有时我的脑子转得太快,你们的提醒让我能归回原位。
感谢我的朋友和邻居:Dave、Javier、Alex、Scott和James。感谢你们经常提供这么多笑料,让我常常合不拢嘴。
感谢在CVSDude的朋友。非常酷的CVS主机名,CVS主机服务也想当棒。
*后要感谢我的良师益友:Graig,教给我写书的秘诀。还有很多其他的人,你们的帮助使这次的出版变得更加顺利。
关于本书
Spring框架是以简化J2EE系统开发为目标而创建的。同样,《Spring in
Action中文版》是以学习如何容易地使用Spring而写的。我们的目标不是详细地列出Spring的API,我们想通过来自现实生活的实际示例代码为J2EE开发人员展示Spring框架。
因为Spring是模块化的框架,所以本书也是按这种方式来写的。我们知道不是所有的开发人员都需要这样,有些人想从头学习Spring,有的可能只是挑几个不同的话题,按照自己的需要来看。所以,本书既可以被刚开始学习Spring的读者当作学习工具,也可以被那些想深入了解某方面知识的读者用作参考指南。
章节组织
《Spring in
Action中文版》分成三大部分和两个附录,每一部分专注于Spring框架的一个领域:核心层、中间层和Web层。每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必从头开始就可以深入到各个话题。
**部分向你展示了Spring框架的两个核心概念:反向控制(Inversion of
Control,IoC)和面向切面编程[1](Aspect-Oriented
Programming,AOP)。这使读者可以更好地理解Spring的基础原理,这些基础原理在本书各个章节都会用到。
第1章向读者展示了IoC和AOP两个技术概念,以及Spring如何利用这两种技术使Java开发变得容易的,同时读者将了解到Spring和其他框架(如EJB、Struts和PicoContainer)的区别。
第2章详细地介绍了如何利用IoC配置你的应用系统,读者将学到如何编写松耦合的组件,如何在Spring容器中利用XML来描述各个组件的属性,装配其依赖类。
第3章向读者介绍了如何使用Spring的AOP来解耦交叉问题,如将**模块从使用它的模块中独立出来。本章也为第5章做了铺垫。在第5章中,读者将学习如何利用AOP来实现声明式事务管理。
第二部分在第1章介绍的IoC和AOP基础之上,向读者展示了如何将这两个概念应用到应用系统的中间层。
第4章覆盖了整个Spring的数据持久层,向读者介绍了Spring对JDBC的支持,这简化了和JDBC相关的开发,读者也会了解到Spring是如何与当前一些流行的ORM框架(如Hibernate、JDO、OJB和iBATIS等)集成的。
第5章是第4章的延续,向读者展示了如何使用Spring事务管理来保证数据一致性。读者将看到Spring是如何在不使用EJB的情况下,利用AOP提供强大的声明式事务的。
第6章展示了如何将你的系统中的对象发布成远程服务,以及如何透明地使用远程服务。介绍的远程技术包括RMI、Hessian/Burlap、EJB、Web
Services以及Spring自己的HttpInvoker。
第7章向读者展示了在Spring 中如何集成其他企业服务,读者将了解到使用Spring集成邮件服务, JMS甚至EJB都是那么的容易。
第三部分走出中间层迈向显示层,在很多J2EE系统中叫做Web层。
第8章介绍了Spring自己的MVC框架。读者将了解Spring如何透明的将Web参数绑定到业务对象中,同时又提供了数据验证和错误处理功能。你也将看到利用Spring的拦截器来添加新功能是多么的容易。
第9章在Spring
MVC的基础上,向读者展示了除了使用JSP外,如何使用其他模板技术(如Velocity和FreeMarker)实现显示层,同时你将看到如何利用Spring
MVC动态产生二进制文件(如PDF和Excel文档)。
第10章
向读者介绍了如何把Spring与其他Web框架集成在一起。对于那些已经在其他框架投入了很大精力的用户来说,Spring提供了与其他Web框架(如Struts、Tapestry、JavaServer
Faces和WebWork)集成的支持。
*后,在第11章中,读者将了解到如何利用Acegi**系统为你的Web系统提供认证服务,你将了解到如何将Acegi和你的业务对象集成,以提供方法级别上的**控制。
附录A向读者介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。
附录B向读者介绍一些与Spring有关的其他开源框架。
本书读者群
《Spring in
Action中文版》适合所有Java开发人员,特别是对企业级Java开发人员更有帮助。我们将循序渐进地指导你浏览贯穿本书的复杂示例。Spring的真正伟大之处在于它使企业级系统开发变得简单,所以,企业级系统开发人员会更加欣赏本书中的示例代码。
由于Spring的绝大部分都是关于提供企业级服务,所以Spring和EJB之间存在很多相似的地方,任何的EJB开发经验都会有助于对这两个框架的比较。虽然本书不是专注于Web系统的,但也有一部分是针对这个话题的。事实上*后四章描述了Spring是如何为Web层开发提供支持的,如果你是一个Web开发人员,你会发现本书的*后一部分特别有用。
编码规范和下载
本书有大量的示例代码,它们都使用代码字体,如果我们要你特别注意某些示例,就会使用加黑代码字体。
许多Spring的类名特别长,所以有时候我们需要使用换行号( )。
本书中的示例代码不都是完整的,我们通常只显示类中我们关注的一两个方法。书中系统的完整源代码可以在出版社的网站http://www.manning.com/walls2或http://www.springinaction.com中得到。
作者在线
购买了《Spring in
Action中文版》,读者就可以免费访问由Manning出版社提供的一个在线论坛,在这里你可以给本书写评论,问一些技术问题,得到作者或其他读者的帮助。要进入这个论坛,请打开浏览器访问www.manning.com/walls2,通过这个页面你能知道如何登录论坛,论坛能提供那些帮助以及论坛的行为规范。
Manning对读者的许诺是为读者提供一个交流平台,在这里读者之间以及读者与作者之间可以进行有意的交流。不论进行多少次访问,作者的访问都是义务的,他们对论坛的贡献是自愿和免费的,所以,我们建议读者尽量向作者问一些有挑战性的问题,以免作者失去兴趣。
只要本书还在出版,读者就可以访问作者在线论坛以及以前的讨论信息。
关于书名
In Action系列图书是为帮助学习和记忆而设计的。根据认知科学的研究,人们能记住的东西往往是都是他们自主发现的东西。
尽管在Manning里没有人是认知学家,但是我相信如果想让学到的知识保持长久,必须要经过探索、感兴趣的实践、将学到的东西重述等阶段。人们只有经过主动的探索才能理解并记住新知识。实践驱动是In
Action系列图书的本质,它鼓励读者尝试,编写新代码,探索新想法。
这本书的书名还有一个更实际的原因,那就是我们的读者都比较忙,他们使用本书来完成一个任务或解决一个问题,他们希望能在需要的时候从本书中快速找到他们需要的东西,他们需要这本书在实际中帮助他们,所有本系列的图书都是为这样的读者而设计的。
关于封面插图
本书的封面是“一个伟大的绅士军官”,这幅图选自Collection of Costumes of the Ottoman
Empire,这本图册是住在伦敦Old Bond大街的William
Miller于1802年1月1日出版的。因为无法找到这部集子的首页,所以我们很难查到具体的日期。这本书的目录用法语和英语标明了所有的人物,每幅图都有两位创作者的名字,毫无疑问,如果他们发现自己的艺术竟然在两百年后能为一本计算机编程图书的封面增色不少,肯定会惊叹不已。
Manning出版社的一个编辑在曼哈顿West 26th
Street的一个车库里的古玩跳蚤市场买了这部册子。卖主是一个住在土尔其安卡拉的美国人,在他要收摊的时候成交了这笔买卖,这位Manning的编辑身上没有足够的现金,而他的信用卡和支票也被委婉拒绝。
卖主当天晚上要飞回安卡拉,使得这笔买卖似乎陷于无望,到底怎么解决的呢?只是一个古老的口头协议和握手。卖主提议通过电报付款,编辑手里拿着写有银行信息的纸条走了出来,腋下夹着那套图册,不用说,第二天,我们就把钱汇了出去。时至**,我们依然对那位不知名的卖主对于我们同仁的信任而感激万分、印象深刻。这使我们回忆起很多古道热肠的事情。
像其他出现在我们封面上的插图一样,这些奥特曼图集里的图画成功地再现了两个世纪前服装的绚丽多彩,它们让我们想起了那个遥远时代的超然的美,还有其他历史时期——除了我们多动烦躁的现代社会。
从那以后,服装风格发生改变,当时富于浓郁地方特色的多样性已经逐渐淡化,现在,我们经常很难说出一个洲的居民和其他洲的居民有什么不同。也许,用乐观的角度来看,可以说我们用文化与视觉的多样性换来了更为多变的个人生活,或更加有趣的知识科技生活。
这些计算机图书的封面反映了两个世纪前地方生活的丰富多彩,而这部图集里的图片则为那灿烂的过去赋予了新的生命。Manning出版社的全体成员对这一新颖有趣的创意表示热烈祝贺。