写点什么

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

评论

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

定向减免!函数计算让 ETL 数据加工更简单

Serverless Devs

容器 云原生 中间件 函数计算 函数计算FC

动态规划-序列比对-最长公共子序列

alexgaoyh

Java 编辑距离 最长公共子序列 Smith-Waterman 序列对比

钉钉飞书的AI大战,一场繁花还是一地鸡毛?

脑极体

AI

SpringBoot3集成Zookeeper

Java 架构 SpringBoot3 Zookeeper3.8 Curator5.5

一个例子形象地理解同步与异步

EquatorCoco

Java 前端 异步 同步

2023 IoTDB Summit:中核武汉核电运行技术股份有限公司主管工程师方华建《IoTDB 在核电数字化转型过程中的应用实践》

Apache IoTDB

百度智能云千帆AppBuilder新手指南

AI大咚咚

AI API LLM AI原生应用

写作,写作,先写后作

zhumingwu

惊为天人!这个保存推特视频到手机相册的办法真的一绝!

frank

twitter

电商平台接口自动化测试框架设计与实现

技术冰糖葫芦

API

小红书多模态团队建立新「扩散模型」:解码脑电波,高清还原人眼所见

小红书技术REDtech

CV 计算机视觉 脑机接口 扩散模型 AAAI

元宇宙技术对于虚拟仿真应用的一些帮助

3DCAT实时渲染

虚拟仿真 元宇宙 元宇宙解决方案

实现定时任务的六种策略

不在线第一只蜗牛

前端 定时任务 开发

外贸独立站如何SEO优化推广?

九凌网络

杭绍甬高速杭绍段等浙3条高速通车,三思再树标杆工程。

电子信息发烧客

秒级弹性!探索弹性调度与虚拟节点如何迅速响应瞬时算力需求?

阿里巴巴云原生

阿里云 云原生 弹性调度

基于 pytorch-openpose 实现 “多目标” 人体姿态估计

北桥苏

Python OpenCV PyTorch MediaPipe Pytorch-OpenPose

二、nextjs API路由如何做好JWT登录鉴权、身份鉴权,joi字段校验,全局处理异常等(c-shopping电商开源)

Geek_9da61c

开源 JWT next.js joi

C# Break 和 Continue 语句以及数组详解

小万哥

C# 程序人生 编程语言 软件工程 后端开发

一文搞清楚Java中的包、类、接口

不在线第一只蜗牛

Java 前端 开发

i人事2023:在不确定性的年份做正确的事情

ToB行业头条

一种快速开发适配鸿蒙的App思路:基于小程序技术

FinFish

鸿蒙操作系统 小程序容器 小程序技术 鸿蒙Next 鸿蒙5.0

高效工作必备神器:这款在线软件能完美替代Visio!

彭宏豪95

在线白板 办公软件 绘图工具 效率软件 Visio

左耳听风 - 分布式架构「读书打卡 day 14」

Java 工程师蔡姬

读书笔记 程序员 个人成长 分布式 职业发展

百万并发!API 网关抗住了亚运会流量高峰

阿里巴巴云原生

阿里云 云原生

聚道云连接器:实现航信费控与用友NCC对接,助力某商贸集团业务升级

聚道云软件连接器

案例分享

如果查看iPhone的GPU

雪奈椰子

《凤凰架构:构建可靠的大型分布式系统》PDF

程序员李木子

《Java核心编程》PDF

程序员李木子

听GPT 讲Rust源代码--compiler(28)

fliter

阿里云 SAE 2.0 正式商用丨云原生 2023 年 12 月产品技术动态

阿里巴巴云原生

阿里云 云原生

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