InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Spring 3.0发布:基于Java5,添加了新的表达式语言和对REST的支持

作者 Ryan Slobojan 译者 徐会生 发布于 2009年12月21日

领域
企业架构,
运维 & 基础架构,
架构 & 设计,
语言 & 开发
主题
Spring Web Flow ,
JCP标准 ,
JPA ,
Spring JavaConfig ,
Spring框架 ,
Java EE ,
JCP ,
Java ,
Web框架 ,
SpringSource ,
依赖注入 ,
语言 ,
REST ,
开放源代码 ,
设计模式 ,
VMWare ,
编程 ,
架构 ,
企业架构 ,
模式 ,
面向对象设计 ,
设计 ,
SpringIntegration ,
SpringSource dm Server ,
Spring Roo

Spring 3.0于12月16日发布啦。InfoQ采访了Spring Framework项目的技术负责人Juergen Hoeller,向他了解这次发布的一些情况以及其对Spring portfolio带来的改变。

Hoeller介绍了Spring 3.0中的主要新特性:

  • 基于Java5 - 核心API使用了Java 5的特性,诸如泛型、注解等等,因此现在Spring 3.0要求Java 5或更高版本
  • Spring表达式语言(SpEL) - 和JSF中的统一表达式语言(Unified EL)类似,构造复杂表达式 非常简单
  • 支持基于注解的组件 - Spring JavaConfig的一些功能已经被移植到核心框架中了,比如@Configuration、@Bean和@DependsOn。
  • 使用约束注解的声明式模型校验 - 增加对JSR 303的支持,我们现在可以使用诸如@NotNull和@Max(23)这样的注解给bean增加校验规则。
  • Spring MVC全面支持REST - 增加了对构建RESTful服务器和客户端的支持。
  • 支持Java EE 6 - 支持许多Java EE 6特性,如JPA 2.0和JSF 2.0,而且可以运行在Tomcat及J2EE 1.4这样的非EE 6容器中。
  • 支持JSR 330 - 现在支持由JSR 330引入的javax.inject注解。
  • 基于注解进行格式化 - 可以使用注解对bean的属性自动进行格式化和转换,比如@DateFimeFormat(iso=ISO.DATE)及@NumberFormat(style=Style.CURRENCY)。

Spring还提供了完整的修改记录参考文档

Hoeller在谈到SpEL时给出了更为详细地说明:

SpEL是一种功能强大的表达式语言,语法遵循统一表达式语言(Unified EL),它与JSF中使用的表达式非常类似。我们特别为SpEL开发了自己的表达式解析器以提供特定的功能:这些特定功能被用在bean定义配置及Spring Integration这样的项目上。在Spring核心中很多地方都用到了"#{...}"表达式,比如XML bean定义和@Value注解、以名字动态引用其它bean并以简明形式间接引用它们的属性。

例如,下面这段XML(来自Spring 3.0 文档)使用SpEL来配置Spring bean的属性,属性值来自JVM系统参数:

<bean class="mycompany.RewardsTestDatabase">
    <property name="databaseName"
        value="#{systemProperties.databaseName}"/>

    <property name="keyGenerator"
        value="#{strategyBean.databaseKeyGenerator}"/>
</bean>

Hoeller还着重介绍了Spring 3.0中对REST的支持:

我们面对的挑战是在Spring MVC的世界中加入对REST的支持,把这种强大的新功能交到MVC用户的手中。我们决定从MVC底层来为路径变量抽取、内容协商等等提供支持,这种方法是正确的——仔细考虑Spring MVC的能力并把它提升到另一个层次,同时又不破坏其基础架构。结果很不错,而且已有的Spring MVC应用采用REST特性也变得简单了。

我们的主要焦点集中于遵循REST协定的web用户接口上。下一步,在Spring MVC基础上实现基于REST的WEB服务也是一件很有意思的事,特别是结合OXM(Object/XML Mapping)模块(如今已成为Spring核心的一部分)。最后,我们要提供一个Spring风格的RestTemplate类,为客户端与面向REST后台服务器的程序交互提供支持。

对于那些工作在Spring 2.5之上,以及那些将其代码更新为基于注解风格的开发者,这次升级过程都将是非常平滑的——在升级到3.0之后,新特性的使用是可选的,而且不需要对基础架构进行任何改变。对那些正在使用更老版本如控制器类层级形式的开发者,这些东西3.0仍然会支持,但是现在不赞成使用(deprecated)。要使用3.0的新特性,必须转向基于注解的 @MVC风格。对Spring 2.0的用户,99%的代码可以继续工作,但是更老的组件如对Apache Commons Attributes、WebLogic 8.1 和 WebSphere5.1的支持被移除了。

当问到Spring Framework的未来计划时,Hoeller提到开发将持续受到Spring portfolio中其他项目的严重影响,比如Spring IntegrationSpring Web FlowSpringSource dm Server以及Spring Roo等等。3.1要发布的功能特性就将受到Spring Integration 2.0和Spring Web Flow 3.0很大影响,比如计划中的一流会话管理、作用域的扩展支持,以及基于注解组件模型的改良等等。在已计划的3.1于2010年中期发布之后,紧接着就是3.2版,但是目前3.2的具体计划还没有最终确定下来。

查看英文原文:Spring 3.0: Java 5 Required, Adds New Expression Language and REST Support

淡定 发表人 Angel Black 发表于
Re: 淡定 发表人 张 中原 发表于
Re: 淡定 发表人 郭 伟 发表于
Re: 淡定 发表人 Shi Jiebin 发表于
牛啊 发表人 jiang rosen 发表于
Re: 牛啊 发表人 jiang rosen 发表于
Re: 牛啊 发表人 yuan jason 发表于
我们真的需要么这么复杂的Spring么 发表人 Cao lei 发表于
  1. 返回顶部

    淡定

    发表人 Angel Black

    唉,现在还菜鸟一只,对spring还没略窥一二。

  2. 返回顶部

    Re: 淡定

    发表人 张 中原

    看不惯注解

  3. 返回顶部

    Re: 淡定

    发表人 郭 伟

    同意,看不惯注释。

  4. 返回顶部

    牛啊

    发表人 jiang rosen

    等待Spring一统浆糊!

  5. 返回顶部

    Re: 牛啊

    发表人 jiang rosen

    PS:最好把JCP也收编了,然后再收编Oracle。

  6. 返回顶部

    Re: 牛啊

    发表人 yuan jason

    spring 已经被 vmware 收编了:)

  7. 返回顶部

    我们真的需要么这么复杂的Spring么

    发表人 Cao lei

    又一种表达式语言,和JSF里的类似,就是还是不一样,大家都乐忠于自己搞点不一样的东西。JEE以标准面世,以标准来打天下,现在Spring几乎成为了既成事实的标准,在成功打翻EJB2之后,也开始自己搞些不一样的东西,感觉Spring有背离其初衷的趋势,自身越来越“全面”,越来越胖了。
    我们真的需要么这么复杂(别硬称其为灵活)么?
    也许你们都喜欢,可我不喜欢

  8. 返回顶部

    Re: 淡定

    发表人 Shi Jiebin

    呵呵,同感,我依赖注入还没搞清楚是怎么回事...