在Spring配置文件中,所有的切面、切入点、增强处理都必须定义在元素内部,元素下可以包含多个元素,一个元素可以包含多个pointcut/advisor/aspect元素,这三个元素必须按照顺序来定义。
1.配置切面:使用元素定义切面,其实质就是将一个Spring Bean转换成切面Bean,因此首先需要将切面类定义成Spring Bean。配置元素可以指定如下三个属性:
1>id:定义该Aspect的标识名
2>ref:用于将ref属性引用的Bean转换成切面Bean
3>order:指定该切面Bean的优先级
2.配置增强处理:使用、、、、定义各自的增强处理,包含各自的属性综合如下:
pointcut:指定切入表达式
pointcut-ref:指定一个已经存在的切入点名称
method:指定使用切面Bean中的哪个方法作为其增强处理
throwing:AfterThrowing增强处理方法可以通过该形参访问目标方法抛出的异常
returning:AfterReturning增强处理方法可以通过该形参访问目标方法的返回值
3.配置切入点表达式:使用元素来定义切入点表达式,该元素包含如下两个属性:
1>id:指定该切入点的标识名
2>expression:指定该切入点关联的切入点表达式
综合示例代码:
<beans...>
<!--Spring AOP主元素-->
<aop:config>
<!--定义一个切入点,用于给增强处理元素引用-->
<aop:pointcut id="simple" expression="execution(* *.*.*(..))" />
<!--定义一个普通Spring Bean-->
<bean id="simpleaspectbean" class="SimpleAspect" />
<!--将Spring Bean配置成切面Bean-->
<aop:aspect id="simpleaspect" ref="simpleaspectbean" order="1">
<!--定义before增强处理,引用之前定义的切入点-->
<aop:before pointcut-ref="simple" method="beforeaspect" />
</aop:aspect>
</aop:config>
</beans>