思路
在类上,打上注解 @Aspect
表明这个类中含有AOP操作方法
在该类的方法上,打上 @Before
等注解;设置好value,表明作用的方法集。位置和操作方法都有了。
在xml中开启AOP注解,就ok了。
相关注解
下面的表格为不完全归纳
注解名 | 注解值 | 含义 | 方法自带参数 | 使用位置 |
---|---|---|---|---|
@Aspect | 见下文 | 标记该类为AOP类 | 无 | 类名上 |
@Before | 见下文 | 被代理方法执行前,执行本方法 | 无 | 方法名上 |
@AfterReturning | 见下文 | 被代理方法执行后,执行本方法 | Object msg:被代理方法执行后的返回结果 | 方法名上 |
@Around | 见下文 | 可以在本方法中调用被代理方法 | ProceedingJoinPoint pjp: 详情见ProceedingJoinPoint类 | 方法名上 |
@AfterThrowing | 见下文 | 被代理方法执行抛出异常时,执行本方法 | Exception ex: 抛出的异常 | 方法名上 |
@After | 见下文 | 类似final,最后一定会执行本方法 | 无 | 方法名 |
方法的注解值举例:
@Before(value="execution(* com.bb.service.impl.*.fun1(..))")
里面的表达式表示对那些方法进行AOP操作: (访问权限 包名+类名+方法名(参数))
* | 任意多个任意字符 |
---|---|
** | 用在路径中,以下所有路径及子路径 |
两个点 | 用在方法括号中, 表明方法中有任意多个参数 |
开启AOP注解开关
<!-- AspectJ开启注解的方式 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
一个AOP类注解,多个AOP类方法注解,配置文件中开启AOP注解。AOP轻松实现。