领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我很高兴地宣布,我们最近发布了第一个 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 表达式注入配置值,通过动态的 #{...} 表达式或静态的 ${...} 占位符引用配置设置。
强大的原型模型:通过元注解的使用,可以创建“快捷方式”注解,例如为自定义原型提供默认的 scope 和事务特性。想象一下,一个自定义的 @MyService 注解,通过一个注解就表示了 @Service、@Scope("request") 和 @Transactional(readOnly=true)。这就是“不要重复自己”原则在组件注解使用上的体现!
标准化的依赖注入注解:Spring 3.0 开始对 JSR-330 Java 依赖注入规范 提供早期支持——通过 `javax.inject.Inject` 及其相关的限定符和提供者模型进行注解驱动的注入,作为 Spring 自有 @Autowired 等的替代方案。请注意,JSR-330 尚未最终确定;随着规范本身的成熟,我们将完成 Spring 的 `javax.inject` 支持。
基于约束注解的声明式模型验证:Spring 风格的 JSR-303 Bean Validation 提供程序(如 Hibernate Validator 4.0)的设置。在 Spring MVC 中提供了注解驱动的验证选项,通过 Spring 的 binding result 机制暴露统一的约束违反视图。请注意,JSR-303 接近最终但尚未完全定稿;我们将跟踪其持续的演进直至 GA。
增强的绑定和格式化功能:无状态的 Converter 和 Formatter SPI 作为标准 PropertyEditors 的替代方案,与 Spring 容器和 Spring MVC 完全集成。在转换(核心类型强制转换)和格式化(渲染为本地化字符串值和从本地化字符串值解析)之间进行区分。格式化可以通过注解驱动,风格类似于 JSR-303 约束注解的使用。
全面的 REST 支持:Spring MVC 中内置的 REST 功能,如 REST 风格的请求映射,通过 @PathVariable 参数提取 URI 变量,以及由内容协商驱动的视图解析。可以将其视为 Spring MVC 2.5 的升级,内置了一流的 REST 功能——同时仍然关注 MVC 方法。客户端 REST 支持以 RestTemplate 类的形式提供。
对象/XML 映射 (OXM):如同 Spring Web Services 中已知的那样,现在已包含在 Spring Framework 核心中。提供 Marshalling 和 Unmarshaller 抽象,并提供对 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 机制,支持一流的 cron,与 Spring 的 TaskExecutor 机制保持一致。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-330** 和 **JSR-303**;我们将在后续的博文中详细介绍 Spring 对这些规范的支持。目前,请查看关于 基于注解的配置 的修订部分以及关于 声明式验证 的新章节。您可能还对 Spring 的新格式化功能感兴趣:注解驱动的字段格式化。
附言:除了 RC1 中的关键功能集之外,我们还在考虑为即将发布的 3.0 RC2 包含几项小改进:例如,一个用于 Spring MVC 中格式化和验证设置的 Web 命名空间。3.0 RC2 定于十月中旬发布;其主要重点是兼容性改进以及运行时优化。敬请关注!