Spring Framework 3.0 RC1 发布

工程技术 | Juergen Hoeller | 2009年9月29日 | ...

我很高兴地宣布,我们最近发布了 Spring 3.0 的第一个候选版本 (下载页面)。此版本完成了 Spring 3.0 的主要功能集。您肯定还记得 Spring 3.0 最初的主题 REST 和 EL;在此期间,我们已显著扩展了功能列表

  • 完全基于 Java 5:这是第一个要求 Java 5 或更高版本的 Spring 版本,整个 Spring API 以及整个实现代码库都使用了 Java 5 语法。例如,BeanFactory API 尽可能返回泛型类型的 bean 实例,并且 ApplicationListeners 现在可以使用泛型声明特定的事件类型。对比来看:在 Spring 2.5 中,实际的 Spring 核心仍然与 JDK 1.4 兼容,而许多更高级别的功能是基于 Java 5 构建的。

  • Spring 表达式语言 (SpEL): 用于 bean 定义的核心表达式解析器,允许通过属性值中通用的 #{...} 语法引用嵌套的 bean 结构(例如其他 bean 的属性)以及环境数据结构(例如系统属性值)。这还为 Spring 项目组合中的各种基于表达式的功能奠定了基础。

  • 扩展的基于注解的组件支持: 现在引入了配置类和注解工厂方法的概念——Spring JavaConfig 项目的关键 Java 配置功能终于在 Spring 本身中可用了!Spring 现在还允许通过 @Value 表达式注入配置值,通过动态的 #{...} 表达式或静态的 ${...} 占位符引用配置设置。

  • 强大的原型模型: 允许通过使用元注解创建“快捷方式”注解,例如为自定义原型提供默认作用域和默认事务特性。想象一个自定义的 @MyService 注解,通过一个注解即可表示 @Service、@Scope("request") 和 @Transactional(readOnly=true)。这是将 Don’t Repeat Yourself 原则应用于组件注解的使用!

  • 标准化的依赖注入注解: Spring 3.0 提供了对 JSR-330 Java 依赖注入规范 的早期支持——通过 javax.inject.Inject 及其相关的 qualifier 和 provider 模型进行注解驱动的注入,作为 Spring 自有的 @Autowired 等注解的替代方案。请注意,JSR-330 尚未最终确定;我们将随着规范本身的成熟来完善 Spring 的 javax.inject 支持。

  • 基于约束注解的声明式模型验证: Spring 风格地设置 JSR-303 Bean Validation 提供程序(例如 Hibernate Validator 4.0)。在 Spring MVC 中提供注解驱动的验证选项,通过 Spring 的绑定结果工具暴露约束违规的统一视图。请注意,JSR-303 接近最终版本但尚未完全最终确定;我们将一直跟踪其持续演变直至 GA 版本。

  • 增强的绑定和格式化工具: 无状态的 Converter 和 Formatter SPIs 作为标准 PropertyEditors 的替代方案,并与 Spring 容器和 Spring MVC 完全集成。区分转换(核心类型强制转换)和格式化(渲染为本地化字符串值并从本地化字符串值解析)。格式化可以像使用 JSR-303 约束注解一样由注解驱动。

  • 全面的 REST 支持: Spring MVC 中的原生 REST 功能,例如 REST 风格的请求映射、通过 @PathVariable 参数提取 URI 变量,以及由内容协商驱动的视图解析。可以将其视为现在内置了一流 REST 功能的 Spring MVC 2.5——同时仍然专注于 MVC 方法。客户端 REST 支持以 RestTemplate 类的形式提供。

  • 对象/XML 映射 (OXM): 如 Spring Web Services 中所知,现已加入 Spring Framework 核心。Marshalling 和 Unmarshaller 抽象,开箱即用地支持 JAXB 2、Castor 等。附带在 Spring MVC 和 Spring JMS 中支持 XML payload 的集成选项。

  • Portlet 2.0 支持: Spring MVC 完全支持 Portlet 2.0 环境和 Portlet 2.0 的新事件和资源请求模型。包括针对典型 portlet 请求特性的专用映射工具:@ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping。

  • 下一代调度功能: 全新 TaskScheduler 和 Trigger 机制,具有一流的 cron 支持,与 Spring 的 TaskExecutor 机制对齐。Spring 3.0 附带了方便的 task 命名空间,现在还支持 @Async 和 @Scheduled 注解。这可以在原生线程池或服务器管理的线程池之上执行,支持所有主要的 Java EE 应用服务器。

  • 最后但同样重要的是,对 Java EE 6 的早期支持: 除了 JSR-303 和 JSR-330 支持外,Spring 3.0 已支持在 Spring 环境中使用 JSF 2.0 和 JPA 2.0。随着 Servlet 3.0 等其他 Java EE 6 相关规范在具体产品中可用,Spring 将完全支持它们;这计划在 Spring 3.1/3.2 时间范围内实现。

在 RC1 版本中尤其重要的是上述提及的“3-0”规范 JSR-330JSR-303;我们将在后续文章中详细阐述 Spring 对这些规范的支持。目前,请查阅关于 基于注解的配置 的修订部分以及关于 声明式验证 的新章节。您可能还会对 Spring 的新格式化功能感兴趣:注解驱动的字段格式化

附注:除了 RC1 中的关键功能集之外,我们正在考虑在即将发布的 3.0 RC2 中包含一些小的增强功能:例如,用于在 Spring MVC 中设置格式化和验证的 web 命名空间。3.0 RC2 计划于 10 月中旬发布;其主要重点是兼容性改进和运行时优化。敬请关注!

订阅 Spring 资讯

订阅 Spring 资讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速进步。

了解更多

获取支持

Tanzu Spring 在一项简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区即将举行的所有活动。

查看全部