[译]Spring 3.0发布:基于Java 5开发,添加了新的表达式语言和对REST的支持
同志们,Spring框架的3.0版本 终于在今天发布啦。InfoQ特别对话了Spring框架项目的技术头领Juergen Hoeller ,从他口中了解到不少关于这次发布对Spring集团带来的改变。
Hoeller详细罗列了Spring 3.0中的各项新特性:
* 基于Java 5 - 目前核心API已经使用了Java 5的特性,诸如泛型、注解等等,因此现在Spring 3.0必须使用Java 5和以后版本才能跑起来。
* Spring表达式语言(SpEL) - 这个和JSF中的统一EL类似,我们可以很容易 在Spring 3.0中使用复杂表达式了。
* 提升对基于注解组件的支持 - Spring JavaConfig 其中的一些功能已经被迁移到核心框架中,比如@Configuration,@Bean和@DependsOn。
* 可以使用约束注解声明对模型的校验方式 - 提供了对JSR 303的支持,我们可以使用注解 为bean添加诸如@NotNull和@Max(23)的校验规则。
* Spring MVC中提供对REST的综合支持 - 添加了 在服务器端和客户端使用RESTful应用的功能。
* 提供对Java EE 6的支持 - 支持了许多Java EE 6中的功能,比如JPA 2.0和JSF 2.0,让它们可以运行在非EE 6的容器下,比如Tomcat和J2EE 1.4应用服务器。
* 提供对JSR 330的支持 - 现在Spring已经支持了 JSR 330中介绍的javax.inject注解。
* 基于注解进行格式化 - bean的属性可以使用注解 来自动进行格式化和类型转换,比如@DateFimeFormat(iso=ISO.DATE)和@NumberFormat(style=Style.CURRENCY)。
Spring还提供了完整的修改日志 和参考文档 。(译者注:文档方面Spring做的确实太好了,也再次感谢满江红团队的辛勤劳动。)
Hoeller在提到SpEL时,多说了那么几句:
SpEL是一种功能强大的表达式语言,语法基于统一表达式(Unified EL),实际上它与JSF中使用的表达式非常类似。我们特别为SpEL开发了自己的表达式解析器以提供特定的功能,无论是在使用bean定义配置还是使用 Spring Integration这类项目时都可以带来不少好处。其实在Spring核心中已经有很多地方都应用了像"#{...}"这样的表达式,可以在XML的 bean定义中看到许多这样的例子。还有@Value这个注解,它可以通过名称动态引用其他的bean,并且可以非常简单就获取这些bean的属性。
举个例子,下面这段XML配置(来自3.0参考文档 )使用了SpEL来配置bean的属性,属性值来自于JVM系统参数:
< 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的特性。
我们的重点聚焦在web用户接口在REST下的转换方式上。下一步呢,在Spring MVC的基础上实现基于REST的网络服务(Web Service)也是很有意思的一件事情,特别是OXM(Object/XML Mapping)现在已经成为了Spring核心模块之一,OXM可以和Spring MVC联合应用。最后,我们提供了RestTemplate类,这是一个Spring式的模板类,它作为客户端提供了与面向REST终端服务器进行交互的 更易用的编程方式。
对于那些工作在Spring 2.5之上,并且已经在代码中使用了基于注解样式的同志们,这次升级的路线将是非常平滑的 - 新功能可以在升级到3.0之后任意选择使用,不需要对基础架构进行任何修改。对于那些还在使用老版本,比如继承了表单控制器,这些功能在3.0中还是可以 继续使用的,只是这些功能都已经被标记为“被废弃了”(deprecated)。如果想使用3.0中的新特性,就必须先使用基于注解的@MVC样式。对于 Spring 2.0用户,99%的代码依然可以正常运行,但是对一些老组件的支持,比如Apache Commons Attributes, WebLogic 8.1 和 WebSphere 5.1,都已经被删除了。
当提起Spring框架的未来计划时,Hoeller提到开发会受到Spring集团中的其他项目的很大影响,比如Spring Integration , Spring Web Flow , Spring Source dm Server 和Spring Roo 等 等。在3.1的发布的新特性就会被Spring Integration 2.0和Spring Web Flow所影响,比如计划中的第一类会话管理(first-class conversation management),扩充作用域(scope)和细化基于注解的组件模型。2010年中旬中的3.1发布之后,会进入3.2版本,对于3.2版本的具 体计划还没有最终完成。
作者: xyz20003
声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
已有 4 人发表回复,猛击->>这里<<-参与讨论
JavaEye推荐
- 上海:高薪诚聘Python开发人员
- 成都:月薪5千到1万招聘Java开发工程师
- 上海:月薪1-2万诚聘资深PHP开发人员
- 北京:高薪招聘Java搜索开发工程师
- 上海:天会皓闻诚聘CTO技术总监
- 北京:手机之家网站诚聘PHP程序员
- 上海:天会皓闻诚聘资深Java架构师
出处:http://fervour.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。