首先 AOP底层实现是通过jdk的动态代理或者CGlib实现的

基本概念:

切点:AOP的Pointcut指定在哪些类的哪些方法上织入横切逻辑

增强:通过Advice(增强)描述横切逻辑和方法的具体织入点(方法前、方法后等)

增强可以添加到类里的所有方法,或者部分方法

增强有多种,这里比较特殊的是引介增强,它不是在目标方法周围织入增强,而是为目标类创建新的方法和属性,通过引介增强,可以为目标类添加一个接口的实现。

切面:通过Adivser(切面)将Pointcut和Advice两者组装起来

切面有三种:

一般切面(Advisor):它仅包含一个Advice,因为Advice包含了横切代码和连接点的信息,所有Advice本身就是一个简单的切面,只不过它代表的横切的连接点是目标类的所有方法,由于横切面太宽泛,一般不会直接使用。

切点切面(PointcutAdvisor):代表具体切点的切面,包含Advice和Pointcut,这样就可以通过类、方法名以及方法方位的信息灵活的定义切面的连接点,提供更具适应性的切面。

引介切面(IntroductionAdvisor):引介切面是对应引介增强的特殊切面,应用于类层面上,所以引介切点使用ClassFilter进行定义