领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我们高兴地宣布,第三个 Spring 3.0 里程碑版本现已可用(下载页面)!此版本包含许多新功能和改进,包括……
参考文档:M3 是第一个包含参考文档的 Spring 3.0 里程碑版本,提供 HTML 和 PDF 格式。即使文档仍在开发中,它目前也涵盖了许多 3.0 功能领域。我们希望您会发现这个早期版本的文档对学习更多关于 3.0 里程碑版本的功能很有用。
带注解的工厂方法:Spring 3.0 M3 包含 Spring JavaConfig 项目的核心功能,即带有注解工厂方法的配置类,这些方法定义了受管理的 Bean。
@Bean @Primary @Lazy public RewardsService rewardsService() { return new RewardsServiceImpl(...); }
这种工厂方法支持任何带注解的组件类(例如普通的 @Component 类),基于组件的状态构建和公开 Bean 对象。它们将被简单地视为从该组件类派生的进一步 Bean 定义,此外还有包含组件的 Bean 定义。此类 Bean 定义的默认名称是其工厂方法的名称(在上例中为:“rewardsService”)。每当容器需要获取新的实例时,这些 Bean 实例将通过工厂方法调用来获取。这在语义上与带有 factory-bean/factory-method 引用的 XML Bean 定义非常接近。
除了简单的工厂方法之外,我们还支持JavaConfig 操作模式:如果在用 @Configuration 注解标记的类上定义了工厂方法,则会应用特殊行为……此类显式配置组件上的工厂方法允许调用同一组件上的其他工厂方法,这些内部工厂方法调用将通过容器重新路由!这允许构建容器管理的 Bean 实例图,构建代码仅由链式 Java 工厂方法调用组成。与原始 JavaConfig 项目一样,我们正在生成此类配置类的 CGLIB 子类以提供这些扩展的语义。
请注意,带注解的工厂方法可以与 XML Bean 定义无缝混合和匹配。它们也可以与常规的带注解的组件类混合和匹配,重用许多常见的注解,例如 @Scope、@Lazy、@Primary 和 @Qualifier。包含带注解的工厂方法的组件可以在 XML 中定义,也可以通过类路径中的组件扫描来检测。基本上,与任何常规 Spring Bean 相同的规则适用;这现在是 Spring 2.5 对带注解的组件支持的自然扩展。
对元注解的扩展支持:Spring 的 @Scope 和 @Transactional 注解,以及 @Service 和 @Controller 等专用原型,现在可以作为元注解应用于自定义注解。例如
@Service @Scope("request") @Transactional(rollbackFor=Exception.class) @Retention(RetentionPolicy.RUNTIME) public @interface MyService { }
@MyService public class RewardsService { … }
这是一种定义具有扩展默认语义的自定义原型注解的强大方法,如上所示。或者,您可以构建简单的自定义范围注解:例如,用 @Scope("request") 标记的自定义 @RequestScoped 注解,或自定义事务注解:例如,用 @Transactional(rollbackFor=Exception.class) 标记的 @MyTx。换句话说,这允许创建方便的快捷注解,用于您首选的配置变体!
TaskScheduler 抽象:Spring 现在提供了一个功能齐全的调度外观 API,包括针对标准 ScheduledExecutorServices 和 CommonJ TimerManagers 的适配器。它带有一个 Trigger 抽象和一个 CronTrigger 实现,用于基于 cron 表达式的简单调度。在 3.0 RC1 中,我们将在此基础上添加一个调度命名空间,以便进行方便的基于 XML 的配置。
新的类型转换 SPI 和转换器 API:受 Spring Web Flow 绑定子系统的功能启发,Spring 现在支持基于 Java 5 的无状态类型转换器。这已经与 Spring 3.0 的表达式解析器集成,并将作为所有 Spring 绑定用途的标准 JDK PropertyEditors 的替代方案在 3.0 RC1 中得到完全支持。同样,Spring Web Flow 3.0 也将使用这个新的统一转换子系统。
我们现在正在转向Spring 3.0 RC1,计划于六月发布。计划用于 RC1 的一个主要新功能是对基于注解的验证的支持:特别是集成 JSR-303 Bean Validation 提供程序。我们还在研究 ApplicationContexts 中启动/停止生命周期的改进,并且正在研究 Spring 管理的范围代理的可序列化解决方案。敬请关注!
附注:我们即将发布一个完全修改版本的旧PetClinic 示例应用程序,作为现代 Spring 3.0 Web 应用程序的展示,它将以单独的发行版提供。Keith 将在未来几天内对此进行博客报道。