Spring破冰之旅 始于足下
生活在一个信息爆炸的时代是幸福的也是痛苦的,幸福是因为新技术总是层出不穷,痛苦是因为总是处于追赶新技术的旅程中。近两年Java程序员对此可能深有感触,Java开源的新旺发达,使我们始终处于目不暇接的状态中,很多同领域技术问题都拥有多个可供选择的技术框架,而Spring开源框架是其中的佼佼者,已成为企业应用开发中使用最多的开源框架。Spring框架的优秀不但表现在其优雅的底层设计、使用方便快捷、面向工作实践、超强粘合能力等方面,另外一个不可忽视的方面是Spring拥有一个世界一流且活跃的技术开发团队:Spring技术的革新、功能的新增从来就没有停止过。
Spring团队在2006年初就发布了Spring 2.0的里程碑版本,后来又发布了多个RC版本,在2006年10月发布了Spring 2.0的正式版本。正式版本发布后,又以2.0.x的形式陆续发布了5个小版本,在2007年5月发布了Spring 2.1正式版本。较之于1.x版本,Spring框架发生了很多重大革新。虽然Spring 2.x是向下兼容的,但是1.x中同类问题已经拥有了更简单更优异的实现。对于一个刚刚学习Spring的开发者而言,抛开1.x版本,直接学习Spring 2.x无疑是最佳的选择。对于需要从Spring 1.x进行升级的开发人员而言,也很有必要了解Spring 2.x的许多重大的变化,因为这些变化不但显著降低了应用开发的难度,而且代表了技术发展的方向。
很多程序员都有这种经历,面对市场上琳琅满目的书籍不知该作何选择,笔者也曾为此犯愁(也多花了不少冤枉钱)。以Spring为例,目前市场上各出版社出版的Spring书籍共有几十种之多,面对这样多类似的书籍,你很难做出正确的选择。不过有经验的人可以通过书中介绍的技术版本,内容结构来作出选择,没有经验的估计对那些21天速成类的书籍更感兴趣,不过我是不会为这种书掏一个大子的,甚至翻一下的兴趣都没有。在我看来程序开发是一个严谨的工作,没有速成道路可走,知其然不知其所以然,是绝对不行的,请记住学习没有捷径。
不过我还是忍不住要说说《精通Spring 2.x--企业应用开发精解》,该书的作者我认识好多年了,他给我的印象是治学严谨,一丝不苟。从这本书中我们可以看出,作者把自己多年开发经验融合在其中,可谓集其数年心血而得,而不是简单的翻译外文资料(很多作品是这样得来的)。更不容易的是基于当前最新的Spring 2.1版本写就的,是当前市面上和Spring最新版本保持同步的书籍,仅此一点该书就能保证其技术在一年之内不会失效。
首先本书对Spring框架的技术内幕进行疱丁解牛般的解构,清晰地讲解了Spring框架的各个组成部分。我们知道Spring以IoC和AOP为技术底座,但是对于Spring究竟如何解决IoC和AOP的问题,很少书籍能给出清晰的答案。原因在于这两个技术涉及到众多Java高级技术的知识,使用到众多的Java编程模式,要把这一问题讲清楚,首先就得将这些背景技术铺垫好。对于一本以Spring为主题的书籍来说,如何通过很少的篇幅将这些背景知识传导给读者是存在难度的。一般书籍采取回避的做法,本书可贵之处在于不怕啃硬骨头,它通过不多的篇幅为读者扫清了理解Spring技术内幕的路障。而且背景知识的补充是适时适地的,没有和相关知识割裂开来,这一点我非常欣赏!另一方面,本书从Spring运作流程和组成构件这两条主线对Spring IoC和AOP进行了深度的分析,围绕在Spring框架外面的神秘面纱被层层剥离,Spring机器的外壳被打开,一部有条不紊,分工明确Spring机器的内部细节豁然于读者的眼前。
可能有些读者会认为:我是在使用Spring,并不需要知道Spring内部细节,因鸡蛋好吃而拷究起生蛋的母鸡来又何苦呢?这种看法并非没有道理,但是透彻理解Spring技术内幕的好处也是非常明显的。首先,我们可以更好地使用Spring,就拿Spring初始化流程来说,如果你精确地知道这一过程有哪些可控节点及运作机理,那么你就可以灵活地利用这些知识实现一些自己的特殊需求(如使用加密的配置文件,向IoC容器中注入自定义编辑器等等)。其次,通过学习国际顶级大师的优秀设计可以在短时间内大幅提高你的Java技术水平,因为没有什么比通过分析一个鲜活技术案例更快提升自己Java技术水平的方法了。
本书共有800余页,对于实用性强的知识进行了深入分析、深度挖掘,而对于不常使用的内容则点到为止,甚至大胆舍弃——这样,本书很好地做到实用性和深入性二者的统一,避免了什么都讲什么又浅尝辄止的伪全面。举例来说,该书对使用XFire开发基于Spring的Web Service应用、Acegi安全控制框架以及在Spring中使用JPA这些实用性强的技术都进行了深入的分析,而对如何集成EJB、JMX、JCA等这些不常使用的功能不加涉及。
也许是因为作者是一线开发人员的缘故,众多实践经验,应用提示等内容贯穿于全书始末,这无疑成为本书的一大看点。Spring框架提倡选择性,因此同一领域的技术就有多种可供选择的实现方案,作为一个开放式的框架来说,Spring的这种理念无疑是值得推崇的,但是对于初学者来说,这种多选择性却给他们带来了困扰。作者在介绍Spring所集成的第三方技术时,对它们的适用场景进行了恰当的分析,为读者指明了方向。具体到某一技术时,又有许多使用经验穿插其中。如第13.6小节就讲述了在实际应用中开发任务调度程序所应该注意的各项问题,包括任务产生方式和群集环境下任务应用的考量,这些知识很少书籍有涉及,这些内容体现了富有经验开发人员的创作优势。
本书另一个难得可贵之处在于不但内容做到了深入全面,面向实践,而且在表现形式上有着许多令人印象深刻的独到之处。首先,全书图文并茂,大量精美的图表点缀其中,对上下文内容的理解起到了很好辅助作用。其次,本书采用了标注式代码注解的新颖方式,将注解和代码本身融为一体,方便代码的阅读。另外全书每一章几乎都有配备了一个或多个“轻松一刻”的短文,这些短文和上下文的内容存在一定联系,但本身是一段独立的趣味小文。如在作者在批评IoC这个专业术语取名不佳时,就提供了一段米芾因名择婿的小故事;在讲解AOP的概念时,作者还拟了一个“AOP 打一成语”的谜语。这些短文给严谨,枯燥的技术书籍增强了兴趣性。老外的技术书籍在这点上做得不错,本书作者在这一方面是可以加分的。
总的来说,在国内众多的Spring技术图书中,这本《精通Spring 2.x--企业应用开发精解》来自开发一线经验丰富的实践型专家,整体质量非常高,是目前本类图书市场上一个高质量的典范。近年来,逐渐出现一批由中国本土开发人员撰写的中、高端技术图书,由于他们经验丰富、认识深刻,而且具有表达上的优势,对中国实际产业状况更为了解,所以写出来的技术图书更接近国情实际,更容易为读者所接受,受到了读者的普遍欢迎。本书就是典型的本土技术图书中的精品,我们乐于向广大Java学习者和一线程序员推荐。