Spring Aop

时间:2024-10-19 07:57:06

Spring AOP的底层实现原理是?

动态代理

动态代理的实现方式?

JDK动态代理、CGLib
代理类:运行时生成的一个二进制字节码的类

实现方式差异

JDK: 需要实现接口(会实现目标类的接口);代理类由JDK类库直接生成的;调用方式:反射调用目标类
CGLib:不能为final(会继承目标类);代理类由第三方的ASM的字节码操作框架生成;调用方式:子类调用目标类(子类调用父类)

性能

JDK1.8之前,CGLib的性能更好,JDK反射调用性能差。
JDK1.8之后做了优化,性能相差无几。

Spring框架默认使用JDK动态代理,SpringBoot默认使用CGLib。