1. Spring AOP介绍
- 定义:将与业务无关的逻辑代码封装起来,降低模块之间的耦合度;
- 适用场景:权限认证、日志、事务等。
2. Spring AOP概念
Spring AOP包含以下几个概念:
- 切面:定义拦截类,对应注解@Aspect;
- 连接点:定义被拦截的方法,对应JoinPoint对象;
- 切入点:定义需要拦截哪些连接点,对应注解@PointCut;
- 通知:拦截到连接点之后要执行的具体方法,分为前置通知、后置通知、异常通知、成功通知、环绕通知等5类;
3. AOP的2种代理方式
Spring提供了JDK和CGLib这两种方式生成代理对象,JDK只能为接口创建代理实例,而对于没有接口定义业务方法的类,则只能通过CGLib创建动态代理来实现。
4. AOP的5种通知类型
通知类型 | 作用 | 注解 |
---|---|---|
前置通知 | 在方法执行之前执行通知 | @before |
后置通知 | 在方法执行之后执行通知,无论方法执行成功还是失败都会通知 | @After |
返回通知 | 在方法执行成功后才执行通知 | @AfterReturning |
异常通知 | 在方法执行失败后才执行通知 | @AfterThrowing |
环绕通知 | 在方法执行之前和之后执行通知 | @Around |