领先一步
VMware 提供培训和认证,助您加速进步。
了解更多Spring 2.5 的核心主题之一是全面的基于注解的配置。我们已经讨论和撰写了很多关于 **@Autowired**、Spring MVC 的 **@RequestMapping** 以及对使用 JUnit4 或 TestNG 编写的注解测试的新支持。**@Autowired** 毫无疑问是 Spring 2.5 注解的核心,可用于服务组件、Web 组件、单元测试——甚至在使用 Spring 的 **@Configurable** 和 AspectJ weaving 时也可以用于领域对象。Spring MVC 的 **@RequestMapping** 也同样灵活,支持多种 handler 方法签名变体。
今天我想换个重点,namely,介绍Spring所支持的广泛的依赖注入注解。下面的列表包含了可在Spring 2.5 bean中使用的关键注解
这组注解包含了Java EE 5的所有通用注解,这意味着您可以在例如Servlet 2.5 servlets、JSF 1.2 managed beans和Spring managed beans中使用相同的通用注解。换句话说,如果您有一些使用注解的标准的JSF 1.2 managed beans,您可以直接将它们从faces-config移动到Spring应用程序上下文中,而无需更改bean类!这是一个重要的设计目标:Spring 2.5可以通过选择SpringBeanFacesELResolver作为自定义JSF ELResolver,直接替换标准的JSF 1.2 managed bean功能。
在配置方面,您需要的所有操作,以启用上述完整的注解集,是在您的Spring应用程序上下文中添加以下简单的配置元素:
<context:annotation-config/>
请注意,此设置仅与依赖注入相关,不需要任何参数化。(如需自定义,请考虑定义Spring的individual AnnotationBeanPostProcessors,例如CommonAnnotationBeanPostProcessor)。但是,annotation-config元素不会激活任何类型的代理或特殊导出。出于这些目的,Spring提供了更具体的配置元素:
<tx:annotation-driven/>
此设置激活事务注解的处理,Spring 2.5开箱即用地支持以下两种变体:
题外话:与Spring的所有支持选项一样,EJB 3.0 TransactionAttribute注解仅在EJB 3.0 API实际存在于类路径中时才可用。Spring会自动适应该API的存在,类似于JSR-250 API或JPA API(如上所述)。
<tx:annotation-driven>元素允许进行事务特定的配置,例如要连接的Spring PlatformTransactionManager(通过“transaction-manager”属性)以及要操作的模式。
<tx:annotation-driven transaction-manager="myTm" mode="aspectj"/>
Spring 2.5中新增的显式AspectJ模式事务注解处理,允许使用Spring的AnnotationTransactionAspect而不是传统的AOP代理。这需要AspectJ编译时织入或加载时织入,修改恰好使用@Transactional注解的类的字节码。这种织入允许注解在任何类型的方法上生效:无论是public、protected还是private——无论是外部调用还是对象内部的调用——事务都会按照注解的指定进行。这与传统的AOP代理形成鲜明对比,在后者中,注解驱动的事务仅限于通过代理的public方法调用。
如果您的环境支持加载时织入,则以下配置足以启用AspectJ风格的事务注解处理。请注意,这需要一个具有内置织入支持的运行时环境(例如WebLogic 10、OC4J 10.1.3.1、配置了Spring的TomcatInstrumentableClassLoader的Tomcat)或在JVM启动时指定Spring的VM代理(“-javaagent:spring-agent.jar”)。
<context:load-time-weaver/><tx:annotation-driven mode="aspectj"/>
<bean id="transactionManager" class="..."/>
最后,Spring 2.5还提供了一个方便的配置元素来激活JMX导出。默认的MBeanServer将在所有常见平台自动检测,包括标准的Java 5平台MBeanServer以及WebLogic 9/10和WebSphere 6暴露的特殊MBeanServer。
<context:mbean-export/>
Spring管理的bean可以实现标准的MBean/MXBean约定,根据JMX规范被认定为MBean类,或者使用以下注解来声明其管理签名(自Spring 1.2起已知):
这表明了Spring注解配置模型的真正强大之处:不同的配置关注点无缝地合并为一个统一的整体,具有一致的配置风格和统一的组件生命周期——它们仍然是标准Spring bean,由Spring ApplicationContext管理!
以上就是对Spring核心配置注解的简要介绍。如果您有兴趣了解Spring 2.5的新特性以及它们如何协同工作,我邀请您参加本周三的Spring 2.5网络研讨会,我将在会上涵盖Spring 2.5的所有关键功能领域,从Java 6支持到基于注解的配置!