那是2005年12月7日,我正站在佛罗里达州迈阿密海滩上一家酒店的大型会议厅里。那间屋子里挤满了来自世界各地的开发人员,他们悻悻然地来到佛罗里达州南部这片美丽的沙滩,都是为了一个目的:谈论Spring。
我能说些什么呢?满屋的痴迷者。相比于惬意的阳光浴和舒爽的冲浪运动,我们更愿意沉浸在笔记本电脑屏幕温暖的辉光里,相互切磋这个我们痴狂已久的框架开发技术。
在那个特别的夜晚,当Spring的创建者罗德·约翰逊(Rod Johnson)介绍此次会议的开放式主旨时,我们都专注地倾听着他的一言一语。他谈到了Spring的起源以及在与其有关的工作中享受到的成功乐趣。然后,他邀请了一些Spring团队成员到讲台上,介绍下一版本中将具有的新特性。
罗德并没有长篇大论地夸夸其谈,而是做了一项重要宣布,吸引了在场每一个人的注意力。当时,我们都在期待这些绝妙的新特性将会在Spring 1.3(推测的下一个spring版本)中可以使用。然而出乎意料的是,罗德宣布,不会再有Spring 1.3,下一个版本将是Spring 2.0。
提高下一次发布的主版本号的决定并不会轻易做出。这样的一个行动暗示着Spring会有一个重大的跃升。如果spnng的下一个版本是2.0,这意味着它的功能将会有显著的提升。果然,在10个月之后,具有许许多多新的性能的Spring 2.0发布了,它包括:
简化的XML,配置以及创建自定义配置元素的选项
大大简化的AOP和事务处理
支持Java 5注解,用于声明切面、事务元和所需的Bean属性
可以从在JRuby、Groovy或BeanShell中编写的脚本里创建Bean
新的JDBC模板,用于已被命名的参数和Java 5特性
改进的Java消息服务(JMS)支持,包括异步接收消息(用于创建消息驱动的POJO)
一个新的格式绑定的JSP标签库
几个配置约定改进,用于减少配置Spring所需的XML量
支持Java Persistence API(JPA)
放大的Bean辖区,包括Web应用Bean的请求与对话辖区
可以在Spring不创建的对象(例如,域对象)上执行依赖注入
罗德的发言中强调的*重要的一点是,如果正在被引入的丰富的新特性不能够使跳跃升级后的2.0版有巨大的改进的话,那么就没必要在此时此刻进行发布。