领先一步
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 的步伐,Spring 2.0 开始支持 JMX 的 @Required、@Transactional、@ManagedResource 以及 JPA 的 @PersistenceContext / @PersistenceUnit。Spring 2.5 支持 JSR 250 的 @PostConstruct(用于初始化方法)、@PreDestroy(用于销毁方法)和 @Resource(用于注入命名托管对象),以及 JAX-WS 2.0 的 @WebServiceRef(用于注入 Web 服务客户端视图)和 @EJB(用于注入会话 Bean 客户端视图)。此外,Spring 2.5 提供了一个可以统领一切的配置注解:@Autowired(用于类型驱动的自动装配,可选择性地与限定符注解结合使用,从一组匹配的候选对象中选择特定对象)。
对于 Web 控制器,Spring 2.5 走得更远:新引入的 @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 配置器 Aspect 配置的 @Configurable 对象;由测试上下文框架运行的测试类。所有这些组件都可以例如使用 @Autowired 进行注入,在所有这些不同的组件类型之间具有一致的语义。
总而言之,请注意 Spring 2.5 当然仍然支持“经典”Spring 配置方法作为一等公民。配置注解是一种可以在不同级别采用的选项:从组件类中的配置“提示”,补充 XML Bean 定义,到通过注解表达其整个配置的自给自足的组件。或者当然也可以根本不使用注解:如果您喜欢外部化配置的架构优势,这是一个完全可行的选择,并且显然也是 Java 1.4 的主要选项。