gpt4 book ai didi

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

代理模式 。

代理模式的英文叫做proxy或surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 。

a. 抽象主题角色 。

声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以是使用代理主题 。

b. 代理主题(proxy)角色:

代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主题控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或之后,都要执行某个操作,而不是单纯地将调用传递给真实主题对象.

c. 真实主题角色 。

定义了代理角色所代表地真实对象 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

例如:

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

用动态代理模式重构 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

jdk动态代理 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

目标类 拦截器 代理类 。

总结:1、因为利用jdkproxy生成的代理类实现了接口,所以目标类中所有的方法在代理类中都有。 2、生成的代理类的所有的方法都拦截了目标类的所有的方法。而拦截器中invoke方法的内容正好就是代理类的各个方法的组成体。 3、利用jdkproxy方式必须有接口的存在。 4、invoke方法中的三个参数可以访问目标类的被调用方法的api、被调用方法的参数、被调用方法的返回类型.

用jdk动态代理模式重构 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

用jdk动态代理模式重构hibernate事务 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

cglib动态代理 。

1、 cglib是一个强大的,高性能,高质量的code生成类库。它可以在运行期扩展java类与实现java接口。 2、 用cglib生成代理类是目标类的子类。 3、 用cglib生成 代理类不需要接口 4、 用cglib生成的代理类重写了父类的各个方法。 5、 拦截器中的intercept方法内容正好就是代理类中的方法体 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

用cglib动态代理模式重构hibernate事务 。

详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

spring两种代理方式 。

1、若目标对象实现了若干接口,spring使用jdk的java.lang.reflect.proxy类代理。 优点:因为有接口,所以使系统更加松耦合 缺点:为每一个目标类创建接口 。

2、若目标对象没有实现任何接口,spring使用cglib库生成目标对象的子类。 优点:因为代理类与目标类是继承关系,所以不需要有接口的存在。 缺点:因为没有使用接口,所以系统的耦合性没有使用jdk的动态代理好.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/cckevincyh/article/details/54962920 。

最后此篇关于详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理的文章就讲到这里了,如果你想了解更多关于详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com