什么是 AOP?
AOP:面向切面编程。简单说,就是把一些业务逻辑中的相同的代码抽取到⼀个独立的模块中,
在不惊动原始设计的基础上为其进行功能增强。
为什么使用AOP?
假如我现在要 crud 写⼀堆业务,可是如何业务代码前后前后进行打印日志和参数的校验呢? 我们可以把日志记录和数据校验可重用的功能模块分离出来,然后在程序的执行的合适的地方动态地 植入这些代码并执行。这样就简化了代码的书写。
业务逻辑代码中没有通用逻辑的代码,业务模块更简洁,只包含核心业务代码。实现了业务逻辑和通用逻辑的代码分离,便于维护和升级,降低了业务逻辑和通用逻辑的耦合性。
AOP核心概念
- 连接点:程序执行过程中的任意位置。
- 切入点:对连接点进行拦截的定位
- 通知:拦截到连接点之后要执行的代码,也可以称为增强。
- 通知类:定义通知的类
- 切面:描述通知与切入点的对应关系
- 目标对象:原始功能去掉共性功能对应的类产生的对象
- 代理对象:代理对象是运行时生成的对象,目标对象无法直接完成工作,需要对其进行功能回填,通过原始对象的代理对象实现。
AOP入门案例
AOP通知类型:
前置通知 (@Before)
返回通知 ( @ AfterReturning)
异常通知 ( @ AfterThrowing)
后置通知 ( @ After)
环绕通知 ( @ Around )