[转记]Spring常见面试题(16)

本文深入解析了代理模式的概念,包括静态代理、动态代理(JDK代理/接口代理)和CGLIB代理的特点及应用场景,如在不修改目标对象前提下扩展功能、隐藏类、提升处理速度等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解释一下代理模式(Proxy)
  • 代理模式: 代理模式就是本该我做的事,我不做,我交给代理人去完成。就比如,我生产了一些产品,我自己不卖,我委托代理商帮我卖,让代理商和顾客打交道,我自己负责主要产品的生产就可以了。 代理模式的使用,需要有本类,和代理类,本类和代理类共同实现统一的接口。然后在main中调用就可以了。本类中的业务逻辑一般是不会变动的,在我们需要的时候可以不断的添加代理对象,或者修改代理类来实现业务的变更。
  • 代理模式可以分为:
  • 静态代理 优点:可以做到在不修改目标对象功能的前提下,对目标功能扩展;缺点:因为本类和代理类要实现统一的接口,所以会产生很多的代理类,类太多,一旦接口增加方法,目标对象和代理对象都要维护。
  • 动态代理(JDK代理/接口代理) 代理对象,不需要实现接口,代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象,需要我们指定代理对象/目标对象实现的接口的类型。
  • CGLIB代理 特点: 在内存中构建一个子类对象,从而实现对目标对象功能的扩展。
  • 使用场景:

修改代码的时候。不用随便去修改别人已经写好的代码,如果需要修改的话,可以通过代理的方式来扩展该方法。

隐藏某个类的时候,可以为其提供代理类 当我们要扩展某个类功能的时候,可以使用代理类 当一个类需要对不同的调用者提供不同的调用权限的时候,可以使用代理类来实现。

减少本类代码量的时候。

需要提升处理速度的时候。就比如我们在访问某个大型系统的时候,一次生成实例会耗费大量的时间,我们可以采用代理模式,当用来需要的时候才生成实例,这样就能提高访问的速度。

具体请见——Java的三种代理模式(Spring动态代理对象)——博客园

转载于:https://my.oschina.net/EricSUID/blog/2247907

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值