写点什么

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:165036

评论

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

模拟器快速上手,助力HarmonyOS应用/服务高效开发

白晓明

HarmonyOS 模拟器 HarmonyOS NEXT

汽车摆臂行业数字化转型方案及MES系统具体功能介绍

万界星空科技

汽车 mes 汽车零部件mes 汽车摆臂行业 汽车摆臂mes

TIDB 利用follower 角色实现读写分离

TiDB 社区干货传送门

KWDB v2.1.0 发版说明

KWDB数据库

时序数据库 查询优化 分布式架构 DataX 数据查询

HarmonyOS :自定义组件 @BuilderParam 中 this 作用域填坑小记

李小轰

HarmonyOS NEXT

HarmonyOS :自定义弹窗(CustomDialog)的解耦实践

李小轰

HarmonyOS NEXT

HarmonyOS :适配折叠屏展开与收起,实现单屏与双屏UI的无缝切换

李小轰

HarmonyOS NEXT

V7.5.3安装tidb ipv6集群(redhat 7.9)

TiDB 社区干货传送门

管理与运维 安装 & 部署 7.x 实践

和鲸气象联合解决方案闪耀亮相第29届联合国气候变化大会(COP29)

ModelWhale

人工智能 AI R 语言 气候 COP29

HarmonyOS :扩展修饰器,实现节流、防抖、权限申请

李小轰

HarmonyOS NEXT

HarmonyOS :ArkUI `动态组件` 与`组件工厂` 的最佳封装策略

李小轰

HarmonyOS NEXT

《一文讲透》第4-3期:KWDB 数据库运维 —— 安全与审计(上)

KWDB数据库

时序数据库 数据库运维 审计 数据库安全 多模数据库

实录速递 | 和鲸ModelWhale助力医学Datathon跨学科协同,共筑数据科学与临床研究标准化新路径

ModelWhale

Python 人工智能 数据库 R语言 临床医学

商业开源的最佳起步实践 PPT 分享中|QCon・北京站圆满落幕

Greptime 格睿科技

数据库 AI 云原生 活动

HarmonyOS :基于 emitter 封装了一个便捷的 EventBus 事件通知

李小轰

HarmonyOS NEXT

HarmonyOS UI动态化:探索自定义组件的创建与实时更新技术

李小轰

HarmonyOS NEXT

ClkLog埋点系统基于ClickHouse的百万日活测试报告

ClkLog

测试 数据采集 sdk 用户分析 开源软件

50万奖金池等你来战! 第二届OpenHarmony创新应用挑战赛再度起航

科技热闻

基于 AutoFlow 快速搭建基于 TiDB 向量能力的本地知识库问答机器人

TiDB 社区干货传送门

8.x 实践

TiDB 无统计信息时执行计划如何生成

TiDB 社区干货传送门

管理与运维 TiDB 源码解读

HarmonyOS :面向对象式网络请求库,我发布的第一个鸿蒙三方库

李小轰

HarmonyOS NEXT

如何在敏捷开发中实现更好的需求管理

易成研发中心

需求管理 需求管理工具

人工智能与人类合作:未来工作模式的新探索

天津汇柏科技有限公司

AI人工智能

华为视频多平台聚合,热门IP《白夜破晓》《珠帘玉幕》任你追

最新动态

探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧

李小轰

HarmonyOS NEXT

用户指南 | 快速迁移 InfluxDB v2 数据至 GreptimeDB

Greptime 格睿科技

数据库 云原生 数据存储 数据迁移

华为阅读启动“乘国航 阅世界”国航伴读计划,3重好礼免费领!

最新动态

和鲸科技创始人&CEO范向伟出席首届工业智算产业发展研讨会,共话 AI 创新与产业化落地

ModelWhale

人工智能 大数据 AI R语言

Domino 流计算快速上手 - 2. 聚集

YMatrix 超融合数据库

数据库 数据仓库 流计算 超融合数据库

记一起 TiFlash 副本同步被卡住的问题

TiDB 社区干货传送门

管理与运维 7.x 实践

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