- 加入依赖,spring依赖和aspectj依赖。
- 创建目标类,接口和实现类。给这个类中加上方法。
- 创建切面类。
-
- 在类之上加上@Aspect
- 在这个类的方法上加上注解表示在哪里值为切入表达式。
- 创建spring配置文件,声明对象,把对象交给容器统一管理,声明对象可以用配置文件也可以用注解。
- 声明目标类
- 声明切面类
- 声明aspectj框架中的自动代理生成器标签。自动代理生成器用来完成对对象的创建。
5. 生成测试类。
joinpoint这个参数用在切面方法上,这个参数指的是切入点方法。
- 前置通知@before
要求:
- 公共方法
- 没有返回值
- 方法名自定义
- 方法可以有参数也可以没有
切面方法
- 后置通知
要求:
- 公共方法
- 没有返回值
- 方法名称自定义
- 方法要有参数,推荐是Object。参数名称自定义。
@AfterReturning
- 属性value
- returning自定义的目标方法的返回值。变量名必须和这个切面方法的自定义名一样。
- 环绕通知
要求:
- 公共方法
- 必须有一个返回值推荐为Object
- 方法名自定义
- 方法有参数,而且是固定的参数
ProccdingJoinPoint
@Around
- 属性value 切入表达式
- 位置
特点
- 功能最强的注解
- 前后都能通知
- 可以控制方法是否被调用。
- 修改原来的执行结果。
- 环绕通知相当于jdk动态代理,invactionHander
参数
ProccdingJoinPoint相当于Method用来执行目标方法。
返回值就是目标的执行结果,可修改。
- 异常通知
要求:
- 公共方法
- 没有返回值
- 方法名自定义
- 方法有一个Exception,也可以有joinpoint
- 最终通知
- @pointcut