主题: AOP详解
开发环境
基于:IntelliJ IDEA
、Maven构建工具
、JDK1.8
、SpringBoot 2.3.4
、Spring4.3.28
编写。
官人如需使用 IDEA 请阅读教程:IntelliJ IDEA
官人如需使用 Maven 请阅读教程:Maven 构建工具的下载与安装
更多干货
请参考:《穿越 Java 之 语法基础篇》 系列文章
请参考:《穿越 Java 之 Web基础篇 》系列文章
请参考:《穿越 Java 之 开发必备框架篇 》 系列文章
请阅读:《穿越 Java 之 SpringBoot框架篇》系列文章
请阅读:《穿越 Java 之 SpringCloud微服务架构篇》 系列文章
面向切面编程
类比学习的话,AOP类似于我们之前的过滤器
常见的AOP的应用:
- 权限检查
- 日志记录
- 性能监控
- 数据库事务
- …
AOP中相关术语
-
Join point: 连接点。潜在的那些方法。
-
Pointcut: 切点、切入点。其实就是一部分需要改变行为的连接点。
-
Target object: 目标对象。 需要被改变行为的对象。
-
AOP proxy: 代理对象。通过动态代理技术生成的那个对象。
-
Advice: 通知、增强。要改变方法行为的那部分逻辑。
-
Aspect: 切面。 切面 = 切点 + 通知。
-
Weaving: 织入。是将增强应用到切点中的过程。【往往体现为我们的配置】
-
Introduction: 【了解】引介增强。
如何将连接点(Join Point)中的一部分筛选出来作为 切入点( Pointcut)。
- 理解:
在数据库领域中使用的是SQL语句。在AOP的领域里面,大家常用的是一种基于AspectJ
的表达式语言。 他可以自己实现一个编译器
(一)需要引入Spring 的 aop 模块。**
aspectjweaver-1.8.9.jar 【用到aspectj表达式】
基于XML配置的AOP
-
定义好目标对象 ,注册到Spring容器中
-
定义好增强对象, 注册到Spring容器中
Spring AOP的底层实现技术
-
底层是采用 动态代理技术, 而动态代理的实现有两种:
-
基于JDK标准的动态代理技术
- 前提: 必须基于接口。
-
就要第三方(已经集成到Spring框架中)的CgLib的动态代理技术
- 前提:是基于继承。要求被代理的类不能是
final
声明的类。
- 前提:是基于继承。要求被代理的类不能是