自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

趁年轻,多去失败

JAVA的世界我来过

  • 博客(51)
  • 收藏
  • 关注

原创 MySQL MVCC机制详解:如何实现无锁高并发读取

MySQL的MVCC机制通过数据多版本和快照读实现高并发下的读写分离,无需加锁即可提升性能。其核心在于三个组件:隐藏字段记录事务信息、Undo Log保存历史版本形成版本链、Read View决定数据可见性。不同隔离级别下Read View生成时机不同:读已提交每次查询生成新视图,可重复读则复用首次视图。MVCC通过Undo Log和Read View的协同工作,在保证数据一致性的同时极大提升了数据库并发性能,是InnoDB的核心优势之一。

2025-10-15 10:00:00 524

原创 MySQL并发控制核心:事务隔离级别与锁机制详解

MySQL的锁机制与事务隔离级别共同构成数据库并发控制基础。事务隔离级别决定加锁策略,而锁是实现隔离性的核心手段。更高级别(如SERIALIZABLE)通过严格锁保证一致性但牺牲性能,更低级别(如READ COMMITTED)减少锁粒度提升并发但存在数据一致性问题。InnoDB默认的REPEATABLE READ通过MVCC和间隙锁在性能与一致性间取得平衡,有效避免脏读、不可重复读和幻读。实际开发中应根据业务需求选择合适隔离级别,理解锁与隔离级别的协同是数据库设计的关键。

2025-09-24 10:00:00 720

原创 MySQL锁机制:原理、实战与最佳实践

MySQL数据库锁机制的核心目标是在保证数据一致性的前提下提高并发性能。主要锁类型包括共享锁(S锁)和排他锁(X锁),以及协调行锁与表锁的意向锁(IS/IX)。InnoDB支持行级锁(记录锁、间隙锁、临键锁)和表级锁,不同锁的粒度与兼容性直接影响并发效率。开发中应合理设计事务、选择合适的隔离级别并建立索引以避免锁升级。文章通过实战示例演示了锁的阻塞行为和意向锁的作用机制,为数据库性能优化提供参考。

2025-09-22 10:00:00 685

原创 数据库的稀疏索引与稠密索引

本文对比了数据库中的稠密索引和稀疏索引。稠密索引为每条记录创建索引项,查询效率高但占用空间大;稀疏索引仅对部分记录创建索引项,节省空间但查询较慢。文章分析了二者的结构、优缺点及适用场景,并举例说明MySQL中不同引擎的索引选择。合理选择索引类型可在存储空间与查询效率间取得平衡。

2025-09-17 10:00:00 438

原创 深入理解MySql索引与存储引擎

本文将深入探讨数据库索引的核心原理与优化实践。首先对比主流索引数据结构(B+树、B树、哈希表等)的特点与适用场景,重点分析B+树在大数据量下的优势。接着解析InnoDB和MyISAM存储引擎的底层实现差异,包括文件组成、索引设计等。最后提供索引优化实战建议,如覆盖索引原则、前缀索引应用等,并演示非聚集索引查询的执行流程。文章旨在帮助开发者深入理解数据库索引机制,提升查询性能优化能力。

2025-09-15 10:00:00 439

原创 MyBatis生产环境高频问题与解决方案

MyBatis生产环境常见问题解析:事务管理需显式提交SqlSession;动态SQL中数值比较需注意OGNL转换陷阱;配置需严格遵循规范顺序;Mapper加载需确保接口与XML匹配;一级缓存需手动刷新保证一致性;大数据分页建议使用物理分页方案。核心问题均源于MyBatis底层机制(事务控制、OGNL处理、配置解析等),开发阶段应重点验证动态SQL与事务逻辑,避免生产环境踩坑。

2025-09-10 10:00:00 358

原创 MyBatis-Plus 使用详解

MyBatis-Plus 摘要 MyBatis-Plus(MP)是基于MyBatis的增强工具,提供无侵入、高性能的CRUD操作支持。核心特性包括:内置通用Mapper/Service、Lambda表达式条件构造、主键自动生成、ActiveRecord模式、分页插件和代码生成器。通过简单配置即可快速实现单表操作,大幅减少重复代码。典型使用流程:添加依赖→配置数据源→创建继承BaseMapper的接口→使用Wrapper构建查询条件。特别推荐Lambda方式避免字段硬编码,并支持物理分页等高级功能。

2025-09-08 10:00:00 919

原创 MyBatis插件开发与源码解析:基于动态代理的责任链机制

MyBatis插件机制通过动态代理和责任链模式,在不修改源码的情况下扩展框架功能。核心实现包括Interceptor接口和@Intercepts/@Signature注解,利用Plugin类创建JDK动态代理,形成多层代理链。开发示例展示了SQL执行时间统计插件的实现,包括拦截方法、配置注册等。源码解析揭示了插件初始化、代理创建和方法执行的底层机制。该设计既保证了框架稳定性,又提供了灵活扩展能力,但需注意方法过滤精确性和性能影响。

2025-09-03 10:00:00 621

原创 MyBatis核心机制解析:接口代理与SQL执行流程

摘要: MyBatis通过动态代理将Mapper接口调用转发至SqlSession执行,核心流程包括: 代理拦截:MapperProxy拦截方法调用,通过MapperMethod路由至对应SqlSession操作; SQL执行:Executor处理一级缓存,未命中时通过StatementHandler执行JDBC,经ResultSetHandler映射结果集; 扩展机制:基于责任链的插件可拦截四大组件(Executor等),动态增强功能。 关键设计包括线程隔离的SqlSession、全局配置中心Config

2025-09-01 10:00:00 1005

原创 MyBatis懒加载全解析:从代理机制到性能优化实践

MyBatis懒加载通过动态代理技术实现按需加载,能有效减少数据库IO。核心配置包括lazyLoadingEnabled(全局开关)、aggressiveLazyLoading(加载策略)和lazyLoadTriggerMethods(触发方法)。使用时需注意N+1查询问题,可通过批量查询优化和合理的事务管理规避风险。最佳实践建议结合二级缓存,在大型对象图中优先使用懒加载,同时注意序列化场景下的状态保持。性能优化可监控SQL日志,在事务边界内完成加载操作。(149字)

2025-08-27 10:00:00 968

原创 MyBatis缓存机制深度解析:一级与二级缓存源码剖析

MyBatis缓存机制解析:一级缓存为SqlSession级别,默认开启,基于HashMap存储,随Session关闭清空;二级缓存为Mapper级别,需显式配置,支持跨Session共享,采用装饰器模式实现。源码层面,一级缓存在BaseExecutor中实现,二级缓存通过CachingExecutor代理执行。关键差异包括作用域、生命周期和共享性等。实践建议:一级缓存适合单Session优化,二级缓存适合读多写少场景,但需注意POJO序列化和脏读问题。文章还包含缓存执行流程图和核心类源码解析。

2025-08-25 08:55:07 852

原创 Spring中HttpServletRequest与HttpServletResponse注入的线程安全性解析

摘要: Spring通过动态代理和ThreadLocal机制确保@Autowired注入的HttpServletRequest/Response线程安全,每个请求获取独立实例。安全使用需避免将请求对象赋值给成员变量或跨线程操作。源码分析显示,代理对象通过RequestContextHolder绑定线程,请求结束时自动清除。异步场景需手动传递上下文。最佳实践推荐优先使用方法参数注入式,规避线程风险。错误用法如缓存请求对象会导致并发问题,需严格防范。

2025-08-20 10:00:00 472

原创 Spring MVC拦截器与过滤器:核心结论与源码实战

摘要: 拦截器(Spring MVC组件)与过滤器(Servlet组件)核心差异在于: 层级:过滤器属Servlet容器(如Tomcat),拦截器属Spring框架 范围:过滤器处理所有请求(含静态资源),拦截器仅作用于Controller 能力:拦截器可注入Spring Bean并获取HandlerMethod,过滤器仅处理原始请求/响应 场景:登录校验优先用拦截器(依赖Spring服务),字符编码用过滤器(需覆盖静态资源)。二者常组合使用,如过滤器处理全局编码+拦截器控制权限,实现高效分层设计。 (摘要

2025-08-18 10:00:00 874

原创 Spring MVC全局异常处理终极实战指南

本文介绍了Spring MVC项目中实现全局异常处理的最佳实践,通过@ControllerAdvice和@ExceptionHandler注解统一捕获控制器层异常。核心方案包括:1)创建全局异常处理类,处理自定义业务异常、参数校验异常和系统异常;2)封装统一响应体结构;3)定义业务异常基类。关键特性包括全局异常拦截、精准异常匹配、RESTful响应格式和日志记录等。还提供了处理404错误、控制执行顺序等进阶技巧,最终实现标准化错误响应输出,提升API健壮性和可维护性。

2025-08-13 10:00:00 544

原创 Spring MVC异常处理源码深度解析:DispatcherServlet与HandlerExceptionResolver的协作

Spring MVC异常处理机制解析 Spring MVC采用责任链模式处理异常,通过DispatcherServlet驱动HandlerExceptionResolver组件实现异常转换。核心流程包括:1)控制器抛出异常后,DispatcherServlet捕获并遍历解析器链;2)解析器按优先级(ExceptionHandlerExceptionResolver、ResponseStatusExceptionResolver、DefaultHandlerExceptionResolver)处理异常;3)首

2025-08-11 10:00:00 938

原创 Spring MVC参数解析器详解:源码解析与自定义实战

Spring MVC参数解析机制 Spring MVC通过**HandlerMethodArgumentResolver接口实现参数解析,采用策略模式管理多种解析器(默认约24个),分为基于注解**(如@RequestParam)和基于类型(如HttpServletRequest)两类。核心流程: supportsParameter():匹配适用的解析器; resolveArgument():生成参数值。 解析器由**HandlerMethodArgumentResolverComposite**统一调度,

2025-08-06 10:00:00 806

原创 Spring MVC URL映射注解解析源码全流程

Spring MVC路由解析机制解析 Spring MVC通过RequestMappingHandlerMapping在启动时深度扫描控制器类,利用AnnotatedElementUtils解析@RequestMapping注解层级结构,智能合并类路径与方法路径(自动处理斜杠连接/占位符/标准化路径),构建RequestMappingInfo对象后注册到线程安全的MappingRegistry中。该机制实现了O(1)级路由匹配性能,核心流程包含:控制器方法扫描→注解继承解析→路径智能合并(支持5种连接场景处

2025-08-04 10:00:00 1046

原创 SpringMVC请求全链路解析:从URL到响应的核心流程

SpringMVC处理HTTP请求的核心流程分为六步:1)DispatcherServlet拦截请求;2)HandlerMapping匹配URL与Controller方法;3)HandlerAdapter反射调用目标方法;4)参数解析器转换请求数据为方法参数;5)ViewResolver解析逻辑视图;6)View生成HTTP响应。关键环节包括参数解析绑定(支持@RequestParam等注解)和视图解析(如将"user/profile"转为JSP路径)。源码层面通过doDispatch(

2025-07-30 10:00:00 662

原创 SpringBoot Controller 传参方式详解:6种核心方法

SpringBoot后端接收参数的6种核心方式:路径参数(@PathVariable)、查询参数(@RequestParam)、JSON请求体(@RequestBody)、表单数据(@RequestParam)、文件上传(@RequestPart)和HTTP请求头(@RequestHeader)。每种方式适用于不同场景,如路径参数适合资源标识,JSON请求体适合复杂对象传输。生产环境建议使用统一响应包装器Result<T>确保接口规范性,并通过配置文件设置参数格式和文件上传限制。完整示例展示了混

2025-07-28 10:00:00 1011

原创 Spring框架核心精要:IoC、AOP与声明式事务的工程价值

摘要: Spring框架通过**控制反转(IoC)和依赖注入(DI)实现组件解耦,提升代码可测试性与可维护性;利用面向切面编程(AOP)**将日志、事务等横切关注点模块化,增强复用性与内聚性;通过@Transactional声明式事务管理简化数据一致性保障。三大核心机制(IoC、AOP、声明式事务)共同构建高效、低耦合的企业级Java应用,显著提升开发效率与系统质量。

2025-07-23 10:00:00 415

原创 ApplicationContextInitializer扩展点深入与实践

Spring容器启动的早期扩展点:ApplicationContextInitializer是Spring容器初始化过程中最先执行的扩展接口,允许在ApplicationContext完成初始化后、refresh()调用前进行自定义配置。开发者可通过三种方式注册(spring.factories/启动类硬编码/配置文件),典型应用场景包括:动态环境变量预处理、容器特性设置(如Bean覆盖策略)、动态注册Bean定义等。其关键优势在于执行时机早于

2025-07-21 10:00:00 522

原创 Spring 容器启动时加载远程配置实现方案

本方案通过ApplicationContextInitializer在Spring容器初始化最早期加载远程配置,赋予其最高优先级覆盖本地配置。核心实现包含:1) RemoteConfigPropertySource采用双重检查锁机制确保线程安全加载;2) 严格校验机制在配置缺失且无默认值时终止启动;3) ConfigValidationProcessor后处理器验证所有@Value配置项。配置源通过RestTemplate获取,需在applicat

2025-07-16 10:00:00 694

原创 Spring框架中@Value宽松绑定机制解析

Spring框架的@Value注解支持宽松绑定机制,允许属性名在不同命名格式(驼峰式、短横线式、下划线式)下都能正确注入值。该特性通过底层属性名标准化处理实现,核心类为ConfigurationPropertyName,负责将各种格式的配置名统一转换为标准格式。RelaxedDataBinder类则负责处理实际绑定过程,通过尝试多种格式的别名绑定来确保配置值能正确注入。源码分析显示,Spring会识别分隔符并拆分元素,生成所有可能的别名格式进行匹配,从而实现对不同命名格式的兼容支持。

2025-07-14 10:00:00 386

原创 数据库事务核心机制:隔离级别保障数据一致性,传播机制控制事务边界

事务隔离级别与传播机制解析 摘要:事务隔离级别和传播机制是数据库事务管理的两大核心概念。隔离级别(如RU、RC、RR、Serializable)由数据库实现,解决并发事务下的数据可见性问题,防止脏读、不可重复读和幻读。传播机制(如REQUIRED、REQUIRES_NEW)由框架实现,管理事务方法调用时的事务边界。MySQL默认采用RR隔离级别,Spring默认采用REQUIRED传播行为。合理配置二者能平衡数据一致性与系统性能,建议事务尽量短小,根据业务场景选择合适配置。

2025-07-09 10:00:00 949

原创 Spring事务底层源码深度解析:从代理机制到事务执行流程

Spring事务实现核心机制 Spring事务通过动态代理(JDK/CGLIB)拦截@Transactional方法,利用PlatformTransactionManager管理事务生命周期: 创建事务:获取数据库连接,关闭autoCommit,设置隔离级别,绑定到线程上下文; 执行SQL:同一连接内执行多个操作; 提交/回滚:根据异常匹配规则决定操作,最终释放连接。 关键源码: 代理创建:InfrastructureAdvisorAutoProxyCreator 事务拦截:TransactionInter

2025-07-07 10:00:00 1041

原创 Spring事务管理深度解析:AOP机制与实战要点

Spring事务机制核心原理:基于AOP动态代理实现,通过@Transactional注解定义事务属性,TransactionInterceptor拦截方法调用,结合PlatformTransactionManager执行事务操作(开启/提交/回滚)。默认只对未检查异常回滚,需注意自调用导致的事务失效问题。 关键点摘要: 代理模式:JDK/CGLIB动态代理实现事务逻辑与业务代码解耦 注解驱动:@Transactional配置传播行为、隔离级别等属性 拦截流程:方法调用→代理拦截→事务管理器操作→清理资源

2025-07-02 10:00:00 915

原创 Spring AOP实战:权限控制与日志记录的终极解耦方案

本文详细介绍了如何使用Spring AOP实现权限校验和日志记录功能。通过自定义注解和切面编程,将权限控制逻辑与业务代码解耦,实现细粒度的权限校验。同时展示了日志切面的完整实现方案,包括方法调用追踪、异常捕获和结果记录。在生产环境中,该方案能显著提升系统可维护性,简化权限管理,并提供全链路日志追踪能力。文中还给出了性能优化建议,如日志异步化和敏感数据脱敏,适用于高并发场景。这种AOP实现方式使业务代码更简洁,同时增强了系统的安全性和可观测性。

2025-06-30 10:00:00 347

原创 Spring代理机制决策:JDK动态代理与CGLIB的智能抉择逻辑

Spring的代理选择机制通过DefaultAopProxyFactory智能判断:当目标类有接口且未强制配置时采用JDK动态代理;若无接口或配置proxyTargetClass=true则使用CGLIB代理。源码通过多重条件判断(如isOptimize()、接口检测等)确保最优代理策略,并避免代理嵌套问题。开发者可通过@EnableAspectJAutoProxy参数干预选择,但建议优先依赖Spring的默认决策机制。该设计兼顾性能和灵活性,在保持自动化的同时为特殊场景提供可控入口。

2025-06-25 10:00:00 409

原创 动态代理硬核剖析:从JDK反射到CGLib字节码的实战演进

Java动态代理是在运行时动态创建代理对象的技术,主要用于在不修改源码的情况下增强方法功能。主要有两种实现方式: JDK动态代理:基于接口实现,通过Proxy和InvocationHandler创建代理对象,必须实现接口。 CGLIB动态代理:基于继承实现,可代理无接口的类,通过Enhancer和MethodInterceptor创建代理对象,但不能代理final类/方法。 两种方式在Spring AOP中都有应用:JDK代理适用于接口场景,CGLIB适用于无接口场景。动态代理广泛应用于AOP编程、RPC框

2025-06-23 10:00:00 717

原创 Spring核心:BeanFactory与FactoryBean的作用与区别详解

BeanFactory与FactoryBean的区别 BeanFactory:Spring IoC容器的根接口,负责管理所有Bean的生命周期(创建、配置、存储、获取和销毁)。它是容器本身,如ApplicationContext的基础。 FactoryBean:一种特殊Bean,用于封装复杂对象的创建逻辑。它通过getObject()方法返回目标对象,而非自身实例。 核心区别: BeanFactory是管理Bean的容器 FactoryBean是容器中生产特定对象的特殊Bean 获取FactoryBean的

2025-06-18 10:00:00 925

原创 Spring Bean 销毁方法全面解析:从机制到实践.md

Spring Bean 的生命周期销毁方法主要包括 @PreDestroy 注解、DisposableBean 接口、XML 配置和 @Bean 属性等机制。仅单例 Bean 由容器自动销毁,原型 Bean 需手动管理。销毁方法触发时机包括容器关闭、Web 上下文关闭和 JVM 关闭钩子。不同销毁机制的执行顺序严格遵循:全局拦截器→@PreDestroy→DisposableBean→配置方法。最佳实践建议优先使用 @PreDestroy,避免混用机制,原型 Bean 需实现资源手动释放。

2025-06-16 10:00:00 544

原创 Spring BeanPostProcessor源码级解析与实战指南

摘要: BeanPostProcessor是Spring核心扩展点,通过介入Bean生命周期(实例化→属性注入→初始化)实现功能增强。其底层通过initializeBean()方法触发,在初始化前后分别调用postProcessBeforeInitialization和postProcessAfterInitialization,支持AOP代理、属性处理等关键功能。开发者可通过自定义处理器实现敏感字段解密、方法耗时监控等场景,甚至构建简易AOP框架(如基于注解的方法拦截)。源码级分析揭示了Spring内置处

2025-06-11 10:00:00 449

原创 Spring Bean初始化终极指南:三种核心方式与执行顺序深度解析

Spring框架提供了三种Bean初始化方式: 1️⃣ @PostConstruct注解(JSR-250标准)实现解耦初始化; 2️⃣ InitializingBean接口提供早周期回调; 3️⃣ init-method配置支持完全解耦的初始化方法。 执行顺序为:@PostConstruct → InitializingBean → init-method。建议优先使用@PostConstruct和init-method以降低耦合,保留InitializingBean用于特殊时序需求。三种方式可组合使用,开

2025-06-09 10:00:00 478

原创 Spring Bean的线程安全性分析

Spring Bean线程安全性取决于作用域和状态设计。默认单例Bean是非线程安全的,若包含可变状态,多线程访问会导致数据竞争。无状态Bean(无成员变量)在任何作用域下都线程安全。原型作用域Bean通常线程安全,但静态变量仍可能引发问题。解决方案包括:无状态设计、使用线程安全类、同步机制或ThreadLocal。优先使用无状态Bean,慎用静态变量,并合理选择作用域(单例适合无状态高性能场景,原型适合有状态需求)。

2025-06-04 10:00:00 451

原创 彻底解决Lombok @Data引发StackOverflowError的三大方案

摘要: Lombok的@Data注解在递归引用或大对象处理时,自动生成的toString()、equals()等方法可能引发StackOverflowError。解决方案包括:1) 直接替换为@Getter+@Setter;2) 使用@ToString.Exclude和@EqualsAndHashCode精细化控制方法生成;3) 避免在toString()中输出大字段。关键原则是显式优于隐式,按需生成方法而非依赖@Data默认行为。适用于双向关联、自引用结构或大对象场景,确保代码安全性与可维护性。

2025-05-28 10:00:00 572

原创 Spring循环依赖解决机制、方案与限制

Spring通过三级缓存机制(singletonObjects、earlySingletonObjects、singletonFactories)和提前暴露Bean引用的设计,能够优雅解决单例Bean的Setter/字段注入循环依赖问题。但对于构造器注入、原型Bean以及复杂多例依赖等场景仍无法处理。文章详细剖析了循环依赖的本质,展示了Spring的破解流程,并指出了三大无法解决的场景。最后给出了工程实践方案:最佳解是代码重构(提取公共模块、引入中间层),应急方案包括@Lazy延迟加载、Setter注入和接

2025-05-26 10:00:00 648

原创 Spring + Lombok:为何 private final 字段无需 @Autowired?核心结论与完整机制解析

在 Spring 框架中,使用 @RequiredArgsConstructor 注解结合 private final 字段实现依赖注入,依赖于 Lombok 生成全参构造器和 Spring 的隐式构造器注入机制。Lombok 在编译时为所有 final 字段生成构造器,而 Spring 4.3+ 版本默认将唯一有参构造器作为依赖注入入口,通过类型或名称匹配容器中的 Bean 完成自动装配。这种方式代码简洁、线程安全且框架耦合性低,适用于无循环依赖、字段需强制初始化的场景。然而,需注意版本兼容性、依赖匹配问

2025-05-21 10:00:00 811

原创 为什么IDEA不推荐使用@Autowired和@Resource进行字段注入?

IDEA对@Autowired和@Resource字段注入均不推荐,因其存在破坏不可变性、隐藏循环依赖和降低代码可维护性等共性缺陷。唯一推荐的方案是使用构造器注入,通过final字段确保依赖不可变,显式声明依赖关系,提升代码健壮性和可读性。IDEA的警告旨在引导开发者遵循Spring官方规范,避免潜在运行时风险。构造器注入不仅提前暴露循环依赖问题,还便于代码审查和重构,是替代字段注入的最佳实践。

2025-05-19 10:00:00 1754

原创 Spring依赖注入(DI)权威指南:核心方式与最佳实践

在Spring框架中,依赖注入是核心功能之一,主要有三种方式:构造器注入、Setter注入和字段注入。构造器注入是官方推荐的方式,适用于所有强制依赖,具有不可变性、线程安全和易测试等优势。Setter注入仅用于可选依赖或需要动态更新的场景,如配置热加载。字段注入则被严禁使用,因为它导致高耦合、破坏封装性且难以测试。在注解选择上,优先使用@Autowired,按名称注入时可选择@Resource。最佳实践是强制依赖必须使用构造器注入,Setter注入仅用于动态更新,字段注入应完全避免。通过遵循这些原则,可以确

2025-05-14 10:00:00 877

原创 深入解析AbstractAutowireCapableBeanFactory:Spring Bean生命周期的核心实现

AbstractAutowireCapableBeanFactory 是 Spring 中管理 Bean 生命周期的核心类,通过模板方法模式定义了 Bean 的创建流程,包括实例化、属性注入、初始化和销毁。该类深度支持依赖注入(如 @Autowired)和扩展点(如 BeanPostProcessor)。文章通过 Mermaid 流程图详细解析了 Bean 的创建主流程和循环依赖的解决机制,并提供了源码级的关键方法解析,如 createBeanInstance()、populateBean() 和

2025-05-12 10:00:00 842

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除