取得领先
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 的表达式解析器集成,并且将在 3.0 RC1 中作为标准 JDK PropertyEditors 的替代方案得到完全支持,用于所有 Spring 绑定目的。 同样,Spring Web Flow 3.0 也将使用这个新的统一转换子系统。
我们现在正在转向计划于 6 月发布的 Spring 3.0 RC1。 RC1 计划的一个主要新功能是支持基于注解的验证:特别是集成 JSR-303 Bean Validation 提供程序。 我们还在研究 ApplicationContext 中启动/停止生命周期的改进,并且正在研究 Spring 管理的作用域代理的可序列化解决方案。 请关注此空间!
附注:我们即将发布一个经过完全修订的旧 PetClinic 示例应用程序版本,作为现代 Spring 3.0 Web 应用程序的展示,它将在单独的发行版中提供。 Keith 将在接下来的几天内撰写有关此内容的博客。