【CGLIB】在 MyBatis 中,CGLIB 是否有应用场景?如果有,是在哪个环节?
MyBatis 中,CGLIB 是否有应用场景?如果有,是在哪个环节?问题引入用户问题原文:在 MyBatis 中,CGLIB 是否有应用场景?如果有,是在哪个环节?作为一款以简洁、高效著称的持久层框架,MyBatis 的核心哲学是“SQL 与代码解耦”。它通过 XML 或注解将 SQL 语句与 Java 方法绑定,并利用动态代理技术,让我们可以直接调用 Mapper 接口的方法来执行数据库操作。然而,这种“魔法”背后究竟使用了何种代理技术?CGLIB 在其中扮演了什么角色?许多经验丰富的工程师会立刻回答:“MyBatis 使用 JDK 动态代理!” 这个答案在大多数情况下是正确的,但并不完整。当 MyBatis 的延迟加载(Lazy Loading)特性被激活时,CGLIB 就会从幕后走到台前,成为实现懒加载代理的关键引擎之一。本文将深入 MyBatis 的源码世界,为你彻底厘清 CGLIB 在 MyBatis 生态中的真实定位。我们将聚焦于延迟加载这一核心场景,剖析 MyBatis 如何通过可插拔的ProxyFactory机制,在 CGLIB 和 Javassist 之间进行技术选型。通过结合 Hudi 数据湖元数据查询的实战案例、详细的源码解读、Mermaid 架构图以及完整的验证步骤,你将获得一套清晰、准确、可落地的知识体系,从而在设计高性能数据访问层时做出更明智的技术决策。