红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

  • 2009-12-21
  • 本文字数:1762 字

    阅读完需:约 6 分钟

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="<b>#{systemProperties.databaseName}</b>"/>
<property name="keyGenerator"
value="<b>#{strategyBean.databaseKeyGenerator}</b>"/>
</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 Integration Spring Web Flow SpringSource 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

2009-12-21 06:164551

评论

发布
暂无评论
发现更多内容

Spring 全家桶之 Spring Data JPA(一)

小白

8月月更

vue高频面试题合集(二)附答案

helloworld1024fd

Vue

OAuth Client默认配置加载

阿提说说

Spring Security OAuth

C++运算符重载(三)之递增运算符重载

CtrlX

c c++ 代码 进阶员进阶 8月月更

数据库 SQL 优化大总结之:百万级数据库优化方案

TimeFriends

8月月更

canvas

Jason199

canvas 8月月更

API服务网关

阿泽🧸

API网关 8月月更

开源一夏 | 参与开源能让人更幸福

石云升

开源 开源社区 8月月更

开源一夏|OpenHarmony如何选择图片在Image组件上显示(eTS)

坚果

开源 OpenHarmony 8月月更

React Redux 组件更新/渲染原理 connect 中的 mapStateToProps

HullQin

CSS JavaScript html 前端 8月月更

开源一夏|5分钟快速为OpenHarmony提交PR(Web)

坚果

开源 OpenHarmony 8月月更

前端面试 | 必知必会的10道Promise题!

千锋IT教育

Kubernetes 计算CPU 使用率

CTO技术共享

开源 签约计划第三季 8月月更

【LeetCode】重新格式化字符串Java题解

Albert

LeetCode 8月月更

Open Office XML 格式中的 Style 设计原理

Jerry Wang

xml 微软 Office 8月月更 openOffice

鲲鹏编译调试及原生开发工具基础知识

乌龟哥哥

8月月更

软件定制开发——企业定制开发app软件的优势

开源直播系统源码

软件开发 直播系统源码 app定制开发 软件定制开发

开源一夏 | 粗暴项目监控,快速上手Spring家族的亲儿子SpringAdmin监控项目

知识浅谈

spring 开源 8月月更

数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口

FinClip

STM32入门开发 LWIP网络协议栈移植(网卡采用DM9000)

DS小龙哥

8月月更

学习Apache ShardingSphere解析器源码(一)

我不吃六安茶

ANTLR Apache ShardingSphere

【精通内核】计算机程序的本质、内存组成与ELF格式

小明Java问道之路

编译原理 ELF 链接 签约计划第三季 8月月更

云原生(十三) | Kubernetes篇之深入Kubernetes(k8s)概念

Lansonli

云原生 k8s 8月月更

Android进阶(一)Android 发邮件与几种网络请求方式详解

No Silver Bullet

android 8月月更 邮件发送

vue高频面试题合集(一)附答案

helloworld1024fd

Vue

Linux配置SSH免密码登录(非root账号)

程序员欣宸

SSH 8月月更

全新FIDE 编译简单评测

Geek_99967b

小程序

开源一夏 | 盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目

宇宙之一粟

GitHub 开源 Go 语言 gopher 8月月更

Kubernetes 选举机制HA

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes你不知道的事

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes 维护技术分享

CTO技术共享

开源 签约计划第三季 8月月更

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