参考答案
结论:动态代理是在程序运行时动态生成代理对象,在不修改原类代码的情况下增强方法功能,常用于AOP场景。
核心要点:JDK动态代理基于接口,通过Proxy.newProxyInstance和InvocationHandler利用反射调用目标方法;CGLIB动态代理基于继承,通过ASM生成子类重写方法,不能代理final类或方法;差异在于JDK要求目标实现接口,CGLIB无需接口但调用更快;Spring AOP默认有接口用JDK,无接口用CGLIB。原理:代理对象伪装成目标,在调用前后插入横切逻辑实现增强。