Spring 专家 Isvy 北京再访:Spring 3.1 近况

  • 张凯峰

2010 年 12 月 18 日

话题:Java开源DevOps语言 & 开发架构

1. Michael,谢谢你在去年早些时候接受 InfoQ 中文站关于 Spring 3.0 的采访。将近两年的时间过去了,你在 Spring 项目中的角色有什么变化吗?最近你在做些什么有趣的工作呢?

哈,谢谢再次对我进行采访:)。我仍然在 Spring 工作,教授它的知识并编写一些课程,就跟以前一样。当然,最大的变化莫过于 SpringSource 不再是一个独立的公司,现在是 VMware 公司的 SpringSource 部门。到目前来看,这是一次令人愉快的变化:还没有哪个开源的项目被放弃。我们还是跟以前一样参与开源社区。

2. 你愿意给我们介绍一下正在进行中的 Spring 开发工作吗?比如 Spring 3.1,都有什么新的有趣的特性?

Spring 3.1 正处于开发中。第一个里程碑应该是在今年年末之前。我们的确有很多有趣的特性。下面是其中主要的部分:

  • Environment profiles:你可以为某个特定的环境(开发、测试、生产等)使用一些配置文件。在你运行应用时,你只需要指定你希望运行哪个 profile。
  • Cache 抽象:我们会提供一些和 cache 相关的 annotation,比如 @Cacheable。你可以使用这些 annotation 并通过配置使用对应的 Cache 实现(GemFire、EhCache 等)。这跟我们在 Spring 中配置 transaction 非常类似。
  • Conversation 管理:这是给 Spring MVC 用户使用的。如果你确信 request 作用域太短而 session 作用域太长,这里就有一个新的作用域叫做“conversation”。这个特性已经出现在 Spring WebFlow 中,我们认为把它放在 Spring MVC 中也很有价值。

3. 云开发是所有具备卓越眼光的软件厂商都认可的趋势。我们知道 Spring(或者应该叫 VMware)正在和 Google 一起合作推进云 Java 开发的项目。你能介绍一下现在最新的进展吗?我们开发者如何利用这些工具来在云上开发呢?

好,其实有很多方式可以把 Spring 应用部署到云上。Google App Engine 是其中一种方式。比如,我们正在进行实现的VMware vFabric 云应用平台

4. 我们都知道 Guice 是 Spring 很大的一个竞争对手。它们对于 Ioc 有着不同的实现,Guice 使用 annotation 而 Spring 更依赖于 xml 来声明类之间的依赖。Guice 的站点上有一个链接提到了跟 Spring 之间的对比。作为一个 Spring 推广者,你会对那些需要 Ioc 框架的中国开发者们有怎样的建议呢?

哈,正如你说的,你是在问一个 Spring 的员工,对吧?:)

首先,我要指出的是在 Spring 和 Google Guice 之上现在有一层抽象层。那就是 JSR 330。现在这两个项目有很多共同的 annotation。它们并没有覆盖所有的 feature,但这已经是个很好的开始。

Spring 和 Guice 都是很好的框架,并获得非常积极的反馈。但是,Spring 还覆盖了更多的特性比如 AOP、Transaction、Remoting 等等。而且还有许多流行的基于 Spring 的项目:Spring Security、Spring Batch 等等。你不会在 Guice 那里看到这样一个生态系统。

还有,在选择一个技术的时候,检查它的应用广泛度是很重要的。你可以看到这里的数据,使用 Guice 的人比 SSH 社区的人要少。

5. 我知道在中国有一些志愿者在翻译 Spring 的官方文档,来帮助更多的人来使用 Spring。

我很确信他们的翻译很受欢迎。他们只是应该小心,因为这是很重要的工作。我们现在拥有大约 800 页的文档!而且,文档还在频繁的更新,因此翻译也会需要以一定的周期进行更新。

Java开源DevOps语言 & 开发架构