JDK动态代理和CGLIB动态代理有什么不同呢?

璐璐 Java面经 发布时间:2022-11-02 21:51:08 阅读数:19390 1 Spring全家桶面试题(2023优化版
下文笔者讲述JDK动态代理和CGLIB动态代理的区别说明,如下所示

动态代理

我们都知道Spring AOP中的动态代理有两种实现方式:
    方式1:
	   使用JDK动态代理
	方式2:
	   使用CGLIB动态代理

JDK动态代理简介

  JDK动态代理只能为接口提供代理
  不支持类的代理
  其实现是依据InvocationHandler接口和Proxy类
   InvocationHandler 通过invoke()方法反射来调用目标类中的代码
   动态地将横切逻辑和业务编织在一起
    接着Proxy利用 InvocationHandler动态创建一个符合某一接口的的实例
	生成目标类的代理对象

当代理类没有实现InvocationHandler接口,则可使用CGLIB来动态代理目标类

CGLIB(Code Generation Library)
  是一个代码生成的类库
  可以在运行时动态的生成指定类的一个子类对象
   并覆盖其中特定方法并添加增强代码
   采用这种方式,即可实现AOP
 
 CGLIB实现动态代理的原理:
   用继承的方式实现动态代理
注意事项: 
   当一个类被final标记
   则无法使用CGLIB生成动态代理 
相关阅读:
Spring 如何使用JDK动态代理呢?
Spring 如何实现一个CGLlB动态代理呢?
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202211/16673971114779.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者