代理模式的定义
代理模式(p电脑机箱什么牌子好roxy pattern)是指为其他对象提供一种代理,以控制对这个对象的访问。
代理对象在客服端和目标对象之间起到中介作用。
属于结构型设计模式。
生活中的代理模式
代理模式的适用场景
保护目标对象
增强目标对象
静态代理
显式声明被代理对象
动态代理
动态配置和替换被代理对象
jdk动态代理的实现原理
1、拿到被代理类的引用,并且获取它的所有的接口(反射获取)。
2、jdk proxy类重新生成一个新的类,实现了被代理类所有接口的方法。
3、动态生成java代码,把增强逻辑加入到新生成代码中。
4、编译生成新的java代码的class文威海大学件。
5、加载并重新运行新的class,得到类就是全新类。
cglib动态代理容易踩的坑
1、无法代理final修饰的方法
cglib和jdk动态代理对比
1.jdk动态代理是实现了被代理对象的接口,cglib是继承了被代理对象。
2.jdk和cglib都是在运行期生成字节码,jdk是直接怎样投简历找工作写class字节码,cglib使用asm框架写class字节码,cglib代理实现更复杂,生成代理类比jdk效率低。
3.jdk调用代理方法,是通过反射机制调用,cglib是通过
fastclass机制直接调用方法,cglib执行效率更高.
代理模式的优点
代理模式能将代理对象与真实被调用的目标对象分离。
一定程度上降低了系统的耦合程度,易于扩展。
代理可以起到保护目标对象的作用。
增强目标对象的职责
代理模式的缺点
代理模式会造成系统设计种类的数目增加
在客户端和目标对象之间增加了一个代理对象胡蝶简历,会造成请求处理速度变慢。
增加了系统的复杂度。
spring中的代理选择原则
1、当bean有实现接口时,spring就会用jdk的动态代理。
2、当bean没有实现接口时,spring选择cglib。
3、spring可以通过配置强制使用cglib,只需在spri2015天猫双十一ng的配置文件中加入如下代码:
<aop:aspectj-autoproxy proxy-target-class=”true”/>
本文发布于:2023-04-05 11:08:17,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/9a18c0b719075652a78c886a3e973163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:代理方式有几种(一般代理和全权代理的区别).doc
本文 PDF 下载地址:代理方式有几种(一般代理和全权代理的区别).pdf
留言与评论(共有 0 条评论) |