领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多正如一些人已经注意到的那样,Spring 2.5 RC1 最终已于周一发布,并等待着您进行试用!Spring 2.5 在很多方面都是完成 Spring 2.0 的使命的版本:为 Java 1.4 和 Java 5 提供最灵活和最全面的配置模型。Spring 2.5 特别侧重于对 Java 5 的全面支持,引入了各种其他注解选项。我想借此机会指出此版本背后的统一主题。
Spring 2.5 允许进行方便的外部化配置,同时尽可能保持其简洁性。这是基于 Spring 2.0 对 XML 模式命名空间的支持,Spring 2.5 引入了新的“context”和“jms”配置命名空间。后者是 Spring 配置命名空间带来的增值的一个很好的例子 - 如果你正在使用 Spring 2.0 样式的消息驱动对象,绝对值得采用!此外,Spring 还允许在不涉及任何 XML 的情况下进行编程引导(如果需要);我们确保也为这种引导样式提供了所有 Spring 2.5 的功能。
作为核心主题,Spring 2.5 为应用程序组件中的配置注解提供了全面的支持。这是继 Spring 2.0 使用 @Required、@Transactional、@ManagedResource(用于 JMX)和 JPA 的 @PersistenceContext / @PersistenceUnit 开始的。Spring 2.5 也支持 JSR 250 的 @PostConstruct(用于初始化方法)、@PreDestroy(用于销毁方法)和 @Resource(用于注入命名托管对象),以及 JAX-WS 2.0 的 @WebServiceRef(用于注入 Web 服务客户端视图)和 @EJB(用于注入会话 Bean 客户端视图)。此外,Spring 2.5 提供了一个统治所有配置注解的注解:@Autowired(用于类型驱动的自动装配,可以选择与限定符注解结合使用,从一组匹配的候选中选择一个特定的对象)。
Spring 2.5 对于 Web 控制器来说更进一步:新引入的 @RequestMapping、@RequestParam 和 @ModelAttribute 注解允许编写带注解的 Web MVC 控制器,而无需实现特定的接口或从特定的基类派生,纯粹基于注解来映射到特定的请求路径。这本质上是对旧版 MultiActionController 方法的下一代,也能够以非常灵活的方式处理表单。当然,作为一流的 Spring 托管对象,这些控制器可以使用上面提到的核心生命周期和注入注解,例如 @Autowired... Spring 2.5 中经过修改的 PetClinic 示例应用程序展示了这些功能的使用,PetClinic 的所有 Web 控制器现在都使用注解样式实现。请查看!
Spring 2.5 还引入了用于集成测试的新基于注解的 TestContext 框架,支持 JUnit 3.8、JUnit 4.4 和 TestNG。这对于 Spring 2.0 用于 JUnit 3.8 的基类来说是一个引人注目的替代方案,支持 Spring 2.5 的核心配置注解(如 @Autowired)用于测试类,并通过注解提供灵活的测试上下文配置。这功能强大、灵活且松耦合:将 Spring 风格的上下文管理应用于集成测试的世界。
作为注解使用最高级别,Spring 2.5 允许自动检测类路径中带注解的组件,使用原型注解,如 @Repository、@Service、@Controller 或通用的 @Component。这允许您完全避免显式 XML bean 定义,指定包中的带注解的组件隐式注册。这可以用于特定目的,例如自动检测 Web 层中的控制器,而服务层组件仍然是显式定义的。
请注意,Spring 2.5 支持对任何类型的托管组件使用相同的配置注解:Spring 定义的 DAO、服务 bean、Web 控制器;通过扫描类路径检测到的组件;AspectJ 配置器方面配置的 @Configurable 对象;测试上下文框架运行的测试类。例如,所有这些组件都可以使用 @Autowired 进行注入目的,在所有这些不同的组件类型中具有相同的语义。
综上所述,请注意 Spring 2.5 当然仍然将“经典”Spring 配置方法视为一等公民。配置注解是一种可以在不同级别采用的选项:从组件类中的配置“提示”,补充 XML bean 定义,到完全自包含的组件,它们通过注解表达其所有配置。或者当然根本不使用注解:如果您更喜欢外部化配置的架构优势,这是一种完全可行的方法,并且显然是 Java 1.4 上的主要选项。