一、AOP的概念
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理【点击查看】实现程序功能的统一维护的一种技术。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
二、AOP是一种思想
举一个例子:我们写了一个业务,我们想在这个业务执行前做一些校验的工作和、执行后做一些日志的工作。
1. 在没有AOP的阶段,我们的解决方法有三种。
第一种:内置代码
第二种:封装方法,调用方法
第三种:使用过滤器
2. 有AOP的阶段
简单地去理解,其实AOP要做三类事:
- 谁去切入,也就是切入的类是谁(切面)。
- 在哪里切入,也就是权限校验等非业务操作在哪些业务代码中执行(切点)。
- 在什么时候切入,是业务代码执行前还是执行后(befor和after)。
- 切入后做什么事,比如做权限校验、日志记录等。
工作流程如下图:
三、介绍一下AOP名词概念
(1)Aspect(切面):通常是一个类,里面有Before() 和 After()方法
(2)JointPoint(连接点):可以理解为被AOP的类中具体的方法
(3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around。这些就是需要织入到连接点中的代码。
(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式
(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。
(6)advisor:增强器,用来筛选类中的哪些方法是我们的连接点(哪些方法需要被拦截).
(7)wave:织入,把切面/切面类和目标类的动态接入。
四、实现AOP的三种方式
我之前的一片文章写得还是很详细的<<实现AOP的三种方式(Spring的AIP接口、自定义、注解)>>【点击查看】 。