> `AOP`
* `AOP`将每一个方法调用,即**连接点**作为编程的入口,针对方法调用进行编程。从执行的逻辑上来看,相当于在之前纵向的按照时间轴执行的程序横向切入。相当于将之前的程序横向切割成若干的面,即`Aspect`.每个面被称为**切面**。
* 因为切面本质上是每一个方法调用,选择切面的过程实际上就是选择方法的过程。那么,被选择的**切面**(`Aspect`)在`AOP`术语里被称为**切入点**(`Point Cut`). 切入点实际上也是从所有的**连接点**(`Join point`)挑选自己感兴趣的连接点的过程。
* `Spring AOP`框架中通过 方法匹配表达式来表示**切入点**(`Point Cut`)。
![](https://i.loli.net/2019/03/15/5c8b543c3a2b4.png)
<br/>
> ### 连接点 `Joinpoint`
```
public interface Joinpoint {
/** 用于执行拦截器链中的下一个拦截器逻辑 */
Object proceed() throws Throwable;
Object getThis();
AccessibleObject getStaticPart();
}
```
<br/>
> ### 切点`Pointcut`
```
public interface Pointcut {
/** 返回一个类型过滤器 */
ClassFilter getClassFilter();
/** 返回一个方法匹配器 */
MethodMatcher getMethodMatcher();
Pointcut TRUE = TruePointcut.INSTANCE;
}
```
<br/>
> ### 通知 `Advice`
* 前置通知(Before advice)- 在目标方便调用前执行通知
* 后置通知(After advice)- 在目标方法完成后执行通知
* 返回通知(After returning advice)- 在目标方法执行成功后,调用通知
* 异常通知(After throwing advice)- 在目标方法抛出异常后,执行通知
* 环绕通知(Around advice)- 在目标方法调用前后均可执行自定义逻辑
<br/>
> ### 切面 `Aspect`
<br/>
> ### 织入 `Weaving`
<br/>
<br/>
***
参考:
[《Spring设计思想》AOP设计基本原理](https://blog.csdn.net/luanlouis/article/details/51095702)
[Spring-AOP-源码分析系列文章导读](http://www.tianxiaobo.com/2018/06/17/Spring-AOP-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E5%AF%BC%E8%AF%BB/)
- asD
- Java
- Java基础
- Java编译器
- 反射
- collection
- IO
- JDK
- HashMap
- ConcurrentHashMap
- LinkedHashMap
- TreeMap
- 阻塞队列
- java语法
- String.format()
- JVM
- JVM内存、对象、类
- JVM GC
- JVM监控
- 多线程
- 基础概念
- volatile
- synchronized
- wait_notify
- join
- lock
- ThreadLocal
- AQS
- 线程池
- Spring
- IOC
- 特性介绍
- getBean()
- creatBean()
- createBeanInstance()
- populateBean()
- AOP
- 基本概念
- Spring处理请求的过程
- 注解
- 微服务
- 服务注册与发现
- etcd
- zk
- 大数据
- Java_spark
- 基础知识
- Thrift
- hdfs
- 计算机网络
- OSI七层模型
- HTTP
- SSL
- 数据库
- Redis
- mysql
- mybatis
- sql
- 容器
- docker
- k8s
- nginx
- tomcat
- 数据结构/算法
- 排序算法
- 快排
- 插入排序
- 归并排序
- 堆排序
- 计算时间复杂度
- leetcode
- LRU缓存
- B/B+ 树
- 跳跃表
- 设计模式
- 单例模式
- 装饰者模式
- 工厂模式
- 运维
- git
- 前端
- thymeleaf
- 其他
- 代码规范
- work_project
- Interview