一、AOP简介
AOP(Aspect Oriented Programming)也即面向切面编程,指在程序运行期间,将某段代码动态的织入到指定的方法的指定位置。AOP的底层是基于动态代理来实现的,作用就是丰富方法的功能、解耦
;应用场景有很多如:作链路监控的时候,可以动态的为方法织入日志,这样每个方法出入口的时候,都有日志可寻,从而实现全链路的一个日志打印,从而达到链路监控的目的。而开发人员不需要关心这些日志打印的实现,可以保证每个方法的一个纯粹性。还有一个就是声明式事务的实现也是基于AOP的一个实现。
二、AOP常用术语介绍
- 横切关注点 我们知道每一个方法的执行过程都可以分为四个部分
方法开始
、方法返回
、方法异常
、方法结束
方法执行的这四个阶段就称为方法的横切关注点。如下图示例所示 横切关注点为固定的四个。 - 连接点 连接点与横切关注点的区别是横切关注点就四个固定的,但是连接点是每个方法的
方法开始
、方法返回
、方法异常
、方法结束
这四个横切关注点都被称为连接点,所以连接点包含横切关注点。如下图所示连接点共有16个 - 通知方法 在横切关注点执行时,需要执行的方法(需要通过动态代理在横切关注点织入的方法)称为通知方法
- 切面 这些通知方法通常是放在一个公共类中的(当然也可以是多个类),这些存放通知方法的类就称之为切面
- 切入点 连接点有很多,但是不是每个连接点都是开发人员所关注的,所以开发人员关注的,需要真正织入通知方法的连接点称之为切点