0、前言
1、什么是AOP
AOP(面向切面编程),是一种横切技术,是对OOP的补充和完善;
使用AOP的横切,可以对系统进行无侵入性的日志监听、事务、权限管理等;
思想上跟拦截器其实类似;拦截器是对action进行拦截处理,AOP是对切面进行拦截处理,其实切面也属于一种action集合;
AOP可以很好解耦;
2、AOP的组成
Aspect:切面;
Join point:连接点;
Advice:通知,在切入点上执行的操作;
Poincut:带有通知的连接点;
target:被通知的对象;
AOP proxy;AOP代理;
其中,Advice(通知)分为以下几种:
- before(前置通知): 在方法开始执行前执行
- after(后置通知): 在方法执行后执行
- afterReturning(返回后通知): 在方法返回后执行
- afterThrowing(异常通知): 在抛出异常时执行
- around(环绕通知): 在方法执行前和执行后都会执行
通知的执行顺序:
around > before > around > after > afterReturning
一、实现示例
光看理论和定义,很多人可能都觉得很难理解,其实用法比较简单,不难的,
我们先来个简单的例子,看完例子你可能就豁然开朗了,
所谓程序员,好看书不如多动手:
实现:
1、添加依赖
<!-- 8、集成AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
2、添加切面类LogAspect
package com.anson.common.aspect; import org.aspectj.lan