相关实例:
使用特定接口定义切面类
使用注解定义切面类
上述切面类,要么用到了特定接口,要么用到了注解,各有不足之处。使用注解有个问题,就是直接在类里面编写注解,不能分离,不方便修改与维护
其实还有一种方法,既不需要实现特定接口,也不需要使用注解,只需在第三方的配置文件中配置一下,这就是使用XML配置文件定义切面的方式,也是目前最常用的AOP方式。
1.若干AspectJ标签的含义
<aop:config>:配置AOP,实现将一个普通类设置为切面类的功能
<aop:aspect>:配置切面
<aop:pointcut>:配置切点
<aop:before>:配置前置通知,将一个切面方法设置为前置增强
<aop:after-returning>:配置后置通知,将一个切面方法设置为后置通知,有返回值
<aop:around>:配置环绕通知
<aop:after-throwing>:配置异常通知,将一个切面设置为异常抛出增强
<aop:after>:配置最终通知,将一个切面方法设置为后置增强,没有有返回值,无论是否异常都执行
2.定义切点的常用方法(即表达式)
execution(public * *(...)):指定切点为任意公共方法
execution(* save *(...)):指定切点为任何一个以 save 开始的方法
execution(* com.xiaochen.service.*.*(...)):指定切点为定义在service包中的任意类的任意方法
execution(* *.service.*.doUpdate()):指定只有一级包下的service子包下的所有类中的doUpdate()方法为切点
execution(* *..service.*.doUpdate()):指定所有ser