软件开发者需要具备许多品格,才能把开发工作做得更好。首先,他们得是善于分析的思想家以及问题的解决者。开发者最基本的任务就是制作出解决业务问题的软件。这就要求开发者能分析客户的需求,并总结出行之有效的解决方案。
同时,他们要有很强的求知欲。软件行业的发展日新月异,新框架、新技术、新语言、以及新方法都不断更新变化。每一样都是一种新的工具,需要开发者去掌握并加入他的工具箱,以便他或她的工作能做得更好更快。
还有一个最宝贵的品格,那就是“懒惰”。这种懒惰激励开发者努力用最小的开销找到最佳的解决方案。我们中间的两个人,就是凭着这样的求知欲、一剂“懒惰”的良方,以及所有能汇集到的分析能力,花了4年的时间探索,终于找到了一条软件开发的新路子。
在Java社区里,现在几乎是一个开放源码泛滥的时代,成千上万个开放源码框架繁荣在Java大地上。要采用其中某一个的话,它必须要在最佳位置命中我们的需求——我们需要的80%的功能必须是即插即用的。框架也必须是易于扩展的,对于那些框架中不能直接使用的功能,也要能很方便地添加进去。扩展并不是非正常的丑陋的拼装,会让你在完成后感到杂乱不堪——它乃是指框架以一种优美的方式来延伸。对于这一点不会有什么疑问了吧?
在诸多框架中,最早被我们小组迅速采纳的是Ant。从我们的切身体会,可以说Ant是由另一个知道我们编译Java应用的痛苦的开发者创造的。有了Ant之后,不再需要javac,也不再需要CLASSPATH。所有这些都由一个简单明了(尽管有时候会很长)的XML配置文件代替。太棒了!工作(和编译)变得更加容易了。
随着时间的推移,我们开始采用越来越多的工具。Eclipse成为我们的IDE选择;Log4J是我们(也是其他任何人的)默认的日志工具;还有Lucene取代了商业的搜索解决方案。这些工具越来越容易使用、理解和扩展,能满足我们普遍的需求。
但也有些欠缺的地方。这些优秀的工具或者被设计为有助于软件开发,像Ant和Eclipse;或者是服务于一个非常特定的应用需求,像搜索方面的Lucene和日志方面的Log4J。却没有一个专注于企业应用的核心需求:如持久化、事务处理以及和其他企业资源的整合问题。
大约在去年的时候,当我们发现这个Spring和Hibernate强强联手的伟大的框架时,这一切都改变了。有了这两个框架,几乎所有的中间层和数据层的需求都能被满足。
首先,我们采用了Hibernate。在那些对象/关系映射工具中,Hibernate是非常直观的,并具有丰富的功能。不过只有把它和Spring结合之后,才能真正使我们的代码非常漂亮。因为有了Spring的反向控制,我们就能去掉所有定制工厂和配置器。事实上,这就是最先我们把Spring整合到我们的应用中的原因。它的架构能简化我们的应用配置,并从原来的解决方案中分离出来。(嗨,每个开发者都喜欢写他自己的框架,但有时你也得放开一下。)
我们很快就发现了一个好处:Spring同时提供了非常简单的Hibernate整合的方法。这让我们能抛开自己定制的Hibernate整合类,用Spring提供的方法来代替。反过来,这也直接把我们带到Spring对透明持久化的支持。
仔细观察一下的话,你会发现这里有个模式。我们更多地使用Spring,就会发现更多的新功能。并且对于发现的每一个功能,我们都能合作愉快。它的Web MVC框架在一些应用中工作得相当好;它的AOP支持在某些地方非常有帮助,特别是在安全上;它的JDBC支持在一些小的程序上相当出色。喔,我们还把它用在调度、JNDI访问、Email整合上。Spring可以说是出类拔萃的,因为它找准了最佳的发展点。
我们是如此喜欢Spring,以至于决定有人该写一本关于Spring的书。幸运的是,我们中有人已经写了一本关于配置的书,并清楚如何开展这类事情。不久我们就成了“该写一本书的人”。承担这个项目,我们试图传播Spring的福音。和Spring框架一起工作对我们来说就是一件充满乐趣的事情——相信对你而言也会如此。并且,我们希望这本书是一个令人满意的媒介,能帮助你实现这一点。
致谢
这本书的创作不仅仅是两个人的事情。除了两位作者之外,在各个方面很多人的参与之下才使这本书的诞生成为可能。
首先,我们要感谢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,教给我写书的秘诀。还有很多其他的人,你们的帮助使这次的出版变得更加顺利。