一、AOP的相关概念
1、切面(类)@Aspect
指的是某一个方面的具体内容,比如判断用户是否登录就是一个切面,日志的统计又是一个切面
2、切点(没有具体实现的方法)@pointcut(“execute(规则)”)
定义一个拦截规则。就想交警定义拦截的规则就是超速, 如果超速就拦截
3、通知advice(方法)@Before@Around(是直接传joinpoint)…
执行AOP的业务逻辑,在连接点周围操作
4、连接点(被拦截的方法本身)
所有可能触发切点的点就叫连接点,就像交警拦截,所有可能超速的车辆,都是连接点
PS
在springboot要引入springboot的AOP依赖,但其实在使用@Aspect注解时发现并不是来自spring boot框架,这是因为springboot的AOP依赖用的是AspectJ的语法
二、AOP的底层实现原理
1.JDK动态代理
invoke()中主要是通过反射来实现动态代理,但是JDK有一个要求——必须要实现处理接口
2.CGLIB动态代理
invoke()通过动态的生成被代理对象的子类(这个技术叫字节码增强技术)
ps
动态代理的意思就是在代码执行的时候创建代理类,动态即使代码执行的时态嘛
本文介绍了AOP的核心概念,包括切面、切点、通知advice和连接点,以及SpringBoot中AOP的使用。重点讲解了JDK和CGLIB动态代理的底层实现原理,展示了动态代理如何在运行时动态创建代理类。

被折叠的 条评论
为什么被折叠?



