首页 > 代码库 > Spring AOP基于XML配置文件的管理方式

Spring AOP基于XML配置文件的管理方式

1、配置Bean

<!-- 定义一个普通Bean实例,该Bean实例将被作为Aspect Bean --><bean id="fourAdviceBean" class="org.crazyit.app.aspect.FourAdviceTest"/><!-- 再定义一个普通Bean实例,该Bean实例将被作为Aspect Bean --><bean id="secondAdviceBean" class="org.crazyit.app.aspect.SecondAdviceTest"/><bean id="hello" class="org.crazyit.app.service.impl.HelloImpl"/><bean id="world" class="org.crazyit.app.service.impl.WorldImpl"/>

2、配置AOP
<aop:config>
<!-- 将fourAdviceBean转换成切面Bean切面Bean的新名称为:fourAdviceAspect指定该切面的优先级为2 -->
<aop:aspect id="fourAdviceAspect" ref="fourAdviceBean" order="2">
<!-- 定义一个After增强处理,直接指定切入点表达式,以切面Bean中的release()方法作为增强处理方法 -->
<aop:after pointcut="execution(* org.crazyit.app.service.impl.*.*(..))"  method="release"/>
<!-- 定义一个Before增强处理, 直接指定切入点表达式 以切面Bean中的authority()方法作为增强处理方法 -->
<aop:before pointcut="execution(* org.crazyit.app.service.impl.*.*(..))"  method="authority"/>
<!-- 定义一个AfterReturning增强处理, 直接指定切入点表达式 以切面Bean中的log()方法作为增强处理方法 -->
<aop:after-returning pointcut="execution(* org.crazyit.app.service.impl.*.*(..))"  method="log" returning="rvt"/>
<!-- 定义一个Around增强处理,直接指定切入点表达式 以切面Bean中的processTx()方法作为增强处理方法 -->
<aop:around pointcut="execution(* org.crazyit.app.service.impl.*.*(..))"  method="processTx"/>
</aop:aspect>

<!-- 将secondAdviceBean转换成切面Bean 切面Bean的新名称为:secondAdviceAspect 指定该切面的优先级为1,该切面里的增强处理将被优先织入 -->
<aop:aspect id="secondAdviceAspect" ref="secondAdviceBean" order="1">
<!-- 定义一个Before增强处理,该参数必须为String类型(由authority方法声明中msg参数的类型决定) -->
<aop:before pointcut= "execution(* org.crazyit.app.service.impl.*.*(..)) and args(aa)"  method="authority"/>
</aop:aspect>
</aop:config>


3、另:

  <aop:pointcut.../>元素可以用来定义切入点,<aop:pointcut id="xxx_id" expression="execution(* org.crazyit.app.service.impl.*.*(..))" />

  若作为作为<aop:aspect.../>子元素则只对该切面有效

  <aop:config.../>的子元素,可以被多个切面通过共享,则

  <aop:after pointcut="execution(* org.crazyit.app.service.impl.*.*(..))"  method="release"/>

  可改为:

  <aop:after pointcut-ref="xxx_id"  method="release"/>

Spring AOP基于XML配置文件的管理方式