您当前的位置: 首页 > 

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

cglib和jdk动态代理区别

java持续实践 发布时间:2021-06-05 14:52:28 ,浏览量:2

动态的创建一个代理类出来, 创建这个代理类的实例对象, 注入的对象, 也是走的代理的对象. 负责做一些代码上的增强, 去调用原有的类.

如果实现了某个接口的, 那么Spring的aop会使用jdk的动态代理. 会去生成一个同样接口的代理类, 构造一个实例对象出来, jdk生成的代理类会去生成一个实现一样接口的类.

如果某个类没有实现接口, 那么springaop 会改用cglib 去生成动态代理. 去生成原有类的子类, 可以动态的生成字节码. 覆盖原有的方法, 在方法里去加入增强的代码.

jdk代理代码示例

代理类去实现InvocationHandler 接口 jdk动态代理代码示例 Proxy.newProxyInstance 去生成代理类, invoke 方法执行目标方法, 并进行增强. jdk动态代理会生成一个动态代理类,生成相应的字节码,然后通过ClassLoader加载字节码

cglib动态代理代码示例

cglib动态代理代码示例 如果类是final 或者方法是final的 ,那么无法代理. 实现MethodInterceptor 接口 getInstance 去创建代理对象. intercept 方法去执行代理的方法和目标方法.

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0363s