Ch03 AOP
Yang Haoran 8/2/2019 SpringJava
# AOP
底层使用动态代理实现:




aspectj:在编译器或类加载的时候植入,不会创建一个全新的类
加入maven依赖:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.7</version>
</dependency>
1
2
3
4
5
2
3
4
5
使用aop步骤:
要代理的方法必须放在接口里,除非使用cglib(通过子类)
- 被代理的类:

- 切面类:

- xml配置文件:

注意使用接口类接受bean

前置通知在方法执行之前被执行
后置通知在方法执行之后被执行(无论发不发生异常都会执行),还不能访问方法运行的结果
- 返回通知:可以获取运行的结果:

- 异常通知:可以访问到异常:

- 环绕通知:类似于动态代理:

切面优先级:
可以通过注解@order设置,值越小,优先级越高

可以使用@PointCut来声明切入点表达式:一般方法体内不写内容
后面其他通知直接引用切入点表达式来声明方法名

用xml配置文件来配置aop:

aop:config中必须包含pointcut和aspect
https://blog.csdn.net/u014785687/article/details/76861150