快速业务通道

在Spring 2.0中集成AspectJ - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
类时为标注@Configurable注解的类织入切面。

首先,我们得将匹配@Configurable注解类的切面类AnnotationBeanConfigurerAspect所在的spring-aspects.jar类包添加到类路径上。spring-aspects.jar类包本身拥有一个aop.xml配置文件,其内容如下所示:<aspectj> <aspects> <aspect name="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect"/> <aspect name="org.springframework.transaction.aspectj.AnnotationTransactionAspect"/> </aspects> </aspectj>

该配置文件会将AnnotationBeanConfigurerAspect和AnnotationTransactionAspect切面类应用到所有类中。

AnnotationTransactionAspect用于处理@Transaction注解,这里我们没有用到。由于,我们希望限制进行AspectJ切面织入目标类的范围,所以我们需要再定义一个aop.xml文件:

<?xml version="1.0"?> <aspectj> <weaver options="-showWeaveInfo -XmessageHandlerClass:org.springframework.aop.aspectj.AspectJWeaverMessageHandler"> <include within="com.baobaotao.configure..*" /> ① 使AspectJ织入器仅对该包下类进行操作 </weaver> </aspectj>

通过<weaver>的options属性的设置,指定在日志中显示织入操作的信息,通过<include>元素指定需要进行AspectJ织入的目标类。可以简单地将这个配置文件放到src/META-INF/目录下。

前面,我们提到过切面类AnnotationBeanConfigurerAspect实现了BeanFactoryAware接口,所以需要在Spring配置文件中配置它,以便其可以感知Spring IoC容器,此外我们还需要配置Thread和Topic领域对象Bean,为标注了@Configurable的领域对象提供依赖注入的功能:<bean class="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect" factory-method="aspectOf"/>① <bean class="com.baobaotao.configure.Topic" scope="prototype"> ② 配置领域对象 <property name="title" value="测试帖子"/> <property name="content" value="测试内容"/> </bean> <bean class="com.baobaotao.configure.Thread" scope="prototype"> ③ 配置领域对象 <property name="title" value="测试的主题"/> <property name="topic" ref="com.baobaotao.configure.Topic"/> </bean>

在Spring 2.0中集成AspectJ(5)

时间:2011-01-02 陈雄华

在①处我们声明了一个AnnotationBeanConfigurerAspect Bean,并且定义了factory-method="aspectOf"属性,确保Spring从AspectJ获取切面实例,而不是尝试自己去创建该实例。

Spring在aop命名空间中为配置AntationBeanConfigurerAspect提供了专门的配置元素:<aop:spring-configured/>,可以用这种简洁的配置替代①处的配置。在②和③处,我们在Spring IoC中配置了领域对象Bean。

至此,一切已经就绪,我们可以编写一个测试类测试Spring管理容器外对象的功能:

package com.baobaotao.configure; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ConfigureAnnoAspectTest ...{ public static void main(String[] args) ...{ String configPath = "com/baobaotao/configure/beans.xml"; Appli

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号