Spring代理工厂类ProxyFactory作用以及实现原理

article/2025/8/21 21:37:31

代理工厂类ProxyFactory

      • `AdvisedSupport`(代理配置信息类)
      • `ProxyFactory`(代理工厂类)
      • 小结
      • 测试

源码见:mini-spring

在这里插入图片描述

在 AOP(面向切面编程)中,Spring 支持两种常见的代理机制:基于接口的 JDK 动态代理 和 基于字节码生成的 CGLIB 动态代理。而 代理工厂(ProxyFactory)的引入,正是为了解决硬编码选择代理方式的问题,通过统一的封装,自动选择最合适的代理实现方式。

为了支持自动判断使用哪种代理方式,我们需要在代理配置信息中引入一个开关字段:

AdvisedSupport(代理配置信息类)

// 是否强制使用 CGLIB 代理(即代理目标类本身,而不是接口)
private boolean proxyTargetClass = false;

这个字段是判断使用 JDK 还是 CGLIB 的关键标识。

ProxyFactory(代理工厂类)

/*** 代理工厂类* * 用于根据配置生成对应的 AOP 代理对象。* 支持两种代理方式:*   - JDK 动态代理(适用于目标类实现了接口)*   - CGLIB 动态代理(适用于目标类未实现接口,或需要代理类本身)* * @author jixu* @date 2025/5/24*/
public class ProxyFactory {// 封装了代理配置(切点、拦截器、目标对象等)private final AdvisedSupper advisedSupper;/*** 构造方法* * @param advisedSupper 配置信息容器*/public ProxyFactory(AdvisedSupper advisedSupper) {this.advisedSupper = advisedSupper;}/*** 获取代理对象* * @return 生成的代理对象(JDK 或 CGLIB)*/public Object getProxy() {return createAopProxy().getProxy();}/*** 创建 AOP 代理对象* * 根据配置决定使用 JDK 动态代理还是 CGLIB 代理。* * @return AopProxy 实现类*/public AopProxy createAopProxy() {if (advisedSupper.isProxyTargetClass()) {// 需要代理类本身,使用 CGLIBreturn new CglibDynamicAopProxy(advisedSupper);}// 默认使用 JDK 动态代理return new JdkDynamicAopProxy(advisedSupper);}
}

小结

  • ProxyFactory 封装了代理选择逻辑,避免手动 new 代理方式。

  • AdvisedSupper 是代理配置的核心容器。

  • proxyTargetClass = true ⇒ 使用 CGLIB(代理目标类本身)

  • 否则 ⇒ 使用 JDK 动态代理(基于接口)

测试

@Test  
public void testProxyFactory(){  advisedSupper.setProxyTargetClass(true);  ProxyFactory proxyFactory = new ProxyFactory(advisedSupper);  WorldService worldService = (WorldService) proxyFactory.getProxy();  worldService.sayHello();  }

http://www.hkcw.cn/article/IKMkiSvpHO.shtml

相关文章

旺店通ERP集成金蝶ERP(金蝶EAS、KIS、K3、云星空、云星辰、云星瀚)

对接说明 旺店通ERP完成所有供应链业务单向同步到金蝶ERP进行成本核算和生成财务凭证: 旺店通ERP货品数据同步至金蝶ERP物料档案旺店通ERP供应商数据同步至金蝶ERP供应商档案旺店通ERP店铺数据同步至金蝶ERP客户档案旺店通ERP仓库数据同步至金蝶ERP仓库档案旺店通…

美国年轻人遭遇“求职寒冬” 就业市场冻结

5月23日,美国加利福尼亚州奥兰治,查普曼大学毕业生参加了毕业典礼。从5月到6月,美国大学迎来了毕业季。来自政府、研究机构和招聘平台的数据揭示了一个令年轻人不安的事实:求职者,尤其是职场新人,面临异常激烈的就业市场。CNBC报道指出,应届毕业生发现劳动力市场比几个月…

俄罗斯一副市长遭人肉炸弹袭击死亡 俄乌冲突背景下的悲剧

俄罗斯一副市长遭人肉炸弹袭击死亡 俄乌冲突背景下的悲剧!5月28日,俄罗斯斯塔夫罗波尔市副市长古尔齐耶夫遭遇爆炸袭击身亡。事发时,一名熟人走近古尔齐耶夫,随后该熟人携带的包发生爆炸。爆炸导致34岁的古尔齐耶夫和29岁的熟人身亡,这名男子在事发地附近租了一套公寓。古…

ArkUI(方舟UI框架)介绍

ArkUI(方舟UI框架)介绍 构建快速入门 使用ArkWeb构建页面

对话云蝠智能魏佳星:大模型呼叫如何重塑智能营销未来?

在数字化浪潮席卷全球的当下,智能营销已然成为企业角逐市场的关键 “武器”。而云蝠智能,作为行业内的 “弄潮儿”,正凭借创新技术引领着这一领域的变革。近日,我们有幸与云蝠智能创始人魏佳星展开深度对话,一同探寻云…

3条警犬退役训导员湿了眼眶 无言战友光荣卸甲

“立正!敬礼!”猎狐、涛涛、巴依从今天开始光荣退役。感谢它们用忠诚和无畏为昭通公安做出的突出贡献。近日,在云南省昭通市公安局警犬基地训练场上,民警辅警庄严敬礼,向三位特殊的战友——警犬“猎狐”“涛涛”“巴依”致以最高礼遇。这场催人泪下的退役仪式为它们的职业…

聊聊 Metasploit 免杀

各位小伙伴们,晚上好! 咱们今天打开宵夜“安全食材箱”,聊聊渗透测试绕过杀毒(免杀)的那些门道。你可以把免杀理解为——深夜做宵夜时,家里有人睡觉,但你非得去厨房整点美食,还不能…

4 串电池保护芯片创芯微CM1341-DAT使用介绍

特性 专用于 4 串锂/铁/钠电池的保护芯片,内置有高精度电压检测电路和电流检测电路。通过检测各节电池的电压、充放电电流及温度等信息,实现电池过充电、过放电、均衡、断线、低压禁充、放电过电流、短路、充电过电流和过温保护等功能,放电过…

SAP销售订单批导创建

一、功能描述 用户导出极简的导入模板,并填写相关业务数据,后导入SAP,系统读取文件,并进行前端展示,通过程序进行测试执行,无误后保存生成的销售订单 二、FS简介 FS包含前端界面,功能设计与字段写入逻辑 前端界面 功能设计 写入字段 三、代码片段 获取ALV中的鼠…

【AI预测】5月30日尼克斯大战前瞻:东部黑马能否再下一城?

🏀 随着赛季进入白热化阶段,5月30日尼克斯的这场比赛注定焦点十足。作为东部近年来少有的“黑马型”球队,尼克斯用硬朗的防守和团队配合让人重新认识了这支老牌劲旅。 这篇文章,我们将从数据模型球员表现战术执行力三个维度&…

李翔担任北京女篮主教练 挖掘内部潜力

北京首钢篮球俱乐部于5月29日宣布,原北京首钢男篮助理教练李翔将担任北京首钢女篮主教练。在2024-2025赛季中国女子篮球联赛(WCBA)中,北京首钢女篮止步季后赛首轮,球队正积极备战全运会和新赛季的比赛。北京首钢篮球俱乐部常务副总经理张云松指出,任命李翔为女篮主教练旨…

永坤黄金出现大规模兑付异常 投资者损失惨重

5月15日,林明像往常一样打开永坤黄金的线上平台,点击“黄金提现”按钮。按照以往三年的操作,资金会在交易发生日后第三个工作日到账。然而到了5月20日,他的银行账户仍未收到款项。与此同时,投资者婷婷也被业务员告知她在线下购买的永坤黄金可能无法提取。2025年初,她在永…

《Pytorch深度学习实践》ch1-线性模型

------B站《刘二大人》 1.Machine Learning 训练集,测试集;开发集:将训练集拆分为(训练集,开发集),用来测试泛化的能力,模型的评估;监督学习:利用一组已知类…

2025年数字经济与绿色金融国际会议:智能金融与可持续发展的创新之路

会议简介 第二届数字经济与绿色金融国际会议即将召开。本次盛会将聚集全球范围内的经济学家、金融科技专家、政策制定者及企业领袖,共同探讨数字经济发展趋势下绿色金融体系构建的关键议题。会议围绕如何利用大数据、区块链、云计算等前沿信息技术推动传统金融业转型…

区间DP概述(JAVA)

区间DP 概述例题例题一 更小的数例题二 能量项链 概述 区间DP和线性DP其实从代码角度来说就是遍历处理的顺序不一样 合并:即将两个或多个部分进行整合,也可以反过来; 特征:能将问题分解为能两两合并的形式; 求解&am…

申请美签学生:愤怒茫然, 所有准备瞬间归零

申请美签学生:愤怒茫然。当地时间5月28日,美国国务院发布一份声明称,将和美国国土安全部共同合作,着手撤销中国留学生的签证,包括在关键领域学习的学生。知悉后,直新闻记者林舒琪随即联系到了正在申请赴美留学、实习的中国学生,打了一通电话。愤怒、失望、沮丧这是我听到…

鸿蒙开发:自定义切换动画实现Swiper层叠滑动效果

前言 本文基于Api13 Swiper组件默认情况下是无论是从左往右,还是从右往左,都是平移滑动,效果如下: 以上的效果是最常见的,基本上都够满足大部分的场景需求,也是很多主流App首选效果,但是&#x…

宇树科技股改为IPO上市铺路,并新增北京国资董事 迈向资本市场新阶段

智能机器人公司宇树科技完成了股改,为IPO上市做准备。5月29日晚,宇树科技宣布因公司发展需要,杭州宇树科技有限公司名称变更为“杭州宇树科技股份有限公司”。原公司的所有业务和合同将继续由新公司名称经营并有效。国家企业信用信息公示系统显示,该变更在5月28日完成。此外…

NLP学习路线图(十一):词干提取与词形还原

引言:文本预处理的必要性 在自然语言处理(NLP)任务中,原始文本数据往往包含大量噪声和冗余信息。例如,单词的时态变化(“running”与“ran”)、复数形式(“cats”与“cat”&#xf…

多人目击野猪闯进学校小区 意外访客引发关注

5月28日,杭州山水人家小区闯进了一只野猪。据网友称,这只野猪是从小区北门进入的,在小区里乱转了很久。中午时分,几名执勤的小区保安证实了这一情况。他们表示,早上8点多,确实有一头野猪从小区北门旁边的花坛窜出来,随后跑进了小区。物业办公室的工作人员也确认了此事,…