前言
哇!当我写下这些文字的时候,距离Spring 1.0的释放以及我和Ryan Breidenbach开始编写Spring in Action **版已经过了七个年头了。那时候,���又能料到Spring会如此深远地影响Java开发呢?
在**版中,我和Ryan力图涵盖Spring框架的各个方面。在很大程度上,我们做到了。那时候,整个Spring可以在11章内很容易讲完,其主要特性是依赖注入、AOP、持久化、事务、Spring MVC以及Acegi Security。当然,那时候的讲解需要大量的XML。(还有人记得使用TransactionProxyFactoryBean来声明事务是什么样的吗?)
等到我编写第二版的时候,Spring已经有了相当可观的成长。当我试图将所有的事情再次放在一本书中的时候,我发现这已经不可能了。Spring已经超出了700到800页的书所能讲述的范围。实际上,因为没有足够的篇幅,在第二版中甚至移除了一些已完成的章节。
从第二版的印刷到现在已经过了三年多的时间,Spring也经历了两个主要的版本。Spring涵盖了更多****的领域,要完整讲述Spring的特性恐怕得要好几卷。将Spring的所有事情塞到一本书中根本是不可能的。
所以,我不会去做这样的尝试。
通常来说后续版本的书会更厚一些。但是你可能发现第三版的Spring in Action比第二版页数更少了。要做到这一点有几个原因。
鉴于我无法将所有的内容放到一本书中,所以我对于哪些话题能够放到书中是很挑剔的。我决定专注于那些在我看来大多数Spring***都应该知道的话题。这并不是说其他的话题不重要,但这些是Spring开发的**要素。
这本书能变得篇幅更少的另一个原因在于尽管Spring在不断成长,但它的每个释放版本都会变得更简单。Spring丰富的配置命名空间、注解驱动的编程模型以及设计良好的约定和默认值会将整页的XML配置减少为几个元素。
但不要产生错觉:尽管页数更少了,但我依然加入了很多Spring的新功能。除了依赖注入、AOP以及声明式事务这些Spring早就提供的功能,以下列出了从第二版之后Spring新增的或修改的功能,而这些都会在这一版里面学到:
基于注解的Bean织入,它能够大幅度减少Spring XML配置。
新的表达式语言,它能够在运行时动态计算织入到Bean属性中的值。
Spring全新的注解驱动的Spring MVC框架,比之前分层的控制器框架灵活得多。
使用Spring Security保护Spring应用程序更加简单了,这是借助于新的配置命名空间、便利的默认行为以及对面向表达式的**规则实现的。
支持构造和使用REST资源,这是基于Spring MVC实现的。
在将Spring用到你的项目之中时,不管你是刚接触Spring还是在Spring上有着丰富的经验,我都希望本书是一个必不可缺的使用指南。