领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我们很高兴地宣布,第三个 Spring 3.0 里程碑版本现已可用(下载页面)!此版本带来了许多新功能和改进,包括……
参考文档:M3 是第一个提供 HTML 和 PDF 格式参考文档的 Spring 3.0 里程碑版本。即使文档仍在进行中,它目前也涵盖了许多 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 现在提供了一个功能齐全的调度 Facade API,包括标准 ScheduledExecutorServices 和 CommonJ TimerManagers 的适配器。这附带了一个 Trigger 抽象和一个 CronTrigger 实现,用于基于 cron 表达式的简单调度。在 3.0 RC1 中,我们将添加一个调度命名空间,以便在此之上方便地进行基于 XML 的配置。
新的类型转换 SPI 和转换器 API:受到 Spring Web Flow 绑定子系统功能的启发,Spring 现在支持无状态的 Java 5 基于类型转换器。这已经与 Spring 3.0 的表达式解析器集成,并将作为标准 JDK PropertyEditors 的替代方案,在 3.0 RC1 中完全支持所有 Spring 绑定用途。同样,Spring Web Flow 3.0 也将使用这个新的统一转换子系统。
我们现在将继续开发Spring 3.0 RC1,该版本计划于 6 月发布。RC1 的一项主要新功能是支持基于注解的验证:具体来说,是JSR-303 Bean Validation提供程序的集成。我们还在研究 ApplicationContexts 中启动/停止生命周期的改进,并正在为 Spring 管理的作用域代理开发序列化解决方案。请密切关注!
附言:我们即将发布一个完全修改过的经典PetClinic 示例应用程序版本,作为现代 Spring 3.0 Web 应用程序的展示,该版本将单独分发。Keith 将在未来几天内就此进行博客更新。