Spring项目最令人钟爱的一点是其社群的活跃程度,以及与其他项目比如CGLIB, Apache Geronimo和AspectJ之间的交叉影响。开放源代码通常来说最大的好处就是假若明天项目就停止开发,至少你手头还有代码。但是让我们仔细面对这一问题——对Spring这种一直在维护升级的大规模的代码库而言,你不会愿意自己一人面对的。因此,让大家知道Spring社群组织良好、氛围活跃可以更加令人心安。
Spring的起源
Spring的起源可以回溯到Rod Johnson编写的“Expert One-to-One J2EE Design and Development”一书(Wrox, 2002)。在这本书中,Rod展示了他的interface 21框架,他为自己的应用编写了这一框架。这一框架被发布到开源世界后,组成了现在我们所知的Spring框架的基础。
Spring在早期的beta和发布备选版本阶段进行得很迅速,第一个正式版本1.0在2004年3月24日发布。从那时起Spring进行双版本发布(稳定版与开发版——译者注),到本书编写时为止,当前处于1.1版本中。
Spring社群
Spring社群是我们所见到的开放源代码项目社群中最好的之一。邮件列表和论坛一直都很活跃,新功能的进展通常很迅速。开发团队真的致力于使Spring成为最成功的Java应用框架,这可以从被重写的代码质量中看出来。Spring中很多正在开发的部分是对现有代码的改写,以达到更快、更小、更整洁,或者三者的混合。
我们已经提到过,Spring也从与其他开源项目的良好关系中获益,想想Spring完整发行包中那么多的依赖包,就知道这是非常有益的。
从用户的角度来说,可能最好的Spring特点就是它漂亮的文档,以及在发行包中包含的测试套件了。Spring中的几乎所有功能都有文档,新用户开始使用框架会很容易。Spring提供的测试套件的详细程度令人印象深刻——开发团队为每件事都编写测试。如果他们发现了一个bug,他们在修正bug之前先为这个bug编写一个测试,然后确认这个测试通过。
这些对你来说有什么意义?简单地来说,这意味着你可以对Spring 框架的质量报以信任,并且可以信任在可以预见的将来,Spring的开发小组会一直增强这一已经很优秀的框架。
基于微软.NET的spring
Spring主框架是100%基于Java的。但是,因为Java版本的成功,.NET世界的开发者开始觉得落后了;因此Mark Pollack和Rod Johnson启动了Spring .NET项目。除了Rod,两个项目有完全不同的开发团队,因此.NET项目对Spring Java产生的冲击保持尽可能的小。实际上,作者们认为这是非常重要的消息。与Java世界中流行的信仰相反,.NET并不是怪兽产生的垃圾的集合,事实是作者们可以证明,有好几个成功的.NET应用已经被发布给了我们的客户,它们在一些领域处于领先地位,比如源代码级元数据,这应该让两个阵营都从此收益。这个项目的另一个影响就是,它让开发者在不同平台的转移变得更加容易,因为你可以在两边都使用Spring。在其他项目比如Hibernate和iBATIS现在也有.NET的对等产品时,这一点就更加重要。你可以在www.springframework.net得到关于Spring .NET的更多信息。
Spring 富客户端平台
Spring主项目的一个分支项目就是Spring Rich Client Platform (RCP),由Keith Donald领导。Spring RCP提供了使用类似Spring的概念构造富客户端的基础类库。Spring RCP的开发还处于早期阶段,但是已经足够完善,可以开始用来把一些有趣的客户端应用集成在一起。Spring RCP将在附录B中讲述。
The Spring IDE
Spring IDE项目是Spring主项目的的另一个分支,它是Eclipse平台的一个plugin。使用Spring IDE,你可以在编辑spring 配置文件时获得完全的源代码高亮效果,以及代码提示功能。你可以减少编写配置文件出错的机会,从而加快开发进度。Spring IDE在附录C中讲述。
用于Spring的Acegi安全系统
Acegi是一个基于Spring构建的安全系统项目。Acegi为基于Spring的应用提供了所需的完整的全功能安全服务,包括多种认证后端、单点登录以及缓存。在这本书中我们不会详细介绍Acegi,你可以在http://acegisecurity.sourceforge.net/获得更多的细节。Acegi项目的支持也可以通过Spring 论坛http://forum.springframework.org获得。
Spring的未来
到编写本书时为止,很多新的功能特征已经被计划到1.2版本中了。这一新版本的着眼点在于,修改AOP实现从而更好地与AspectJ集成;整合JMX,将把Spring管理的bean发布为JMX管理的资源;Spring自己也会被配置为使用JMX; 对portlet的支持;以及针对Spring配置文件的文档工具。





