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)。这是应用于组件注解使用的“不要重复自己”原则!

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

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

  • 增强的绑定和格式化功能:作为标准 PropertyEditors 的替代方案,具有无状态 Converter 和 Formatter SPI,具有完整的 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 核心。具有开箱即用地支持 JAXB 2、Castor 等的编组和解组抽象。包含在 Spring MVC 和 Spring JMS 中用于 XML 有效负载支持的集成选项。

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

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

  • 最后但并非最不重要的一点是,对 Java EE 6 的早期支持:除了 JSR-303 和 JSR-330 支持之外,Spring 3.0 还支持在 Spring 环境中使用 JSF 2.0 和 JPA 2.0。其他与 Java EE 6 相关的规范(例如 Servlet 3.0)将在它们在具体产品中可用时得到完全支持;这计划在 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 Newsletter

通过 Spring Newsletter 保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部