- 博客(103)
- 收藏
- 关注
原创 Spring Boot Swagger3 使用指南
本文介绍了Swagger3(OpenAPI 3.0)在Spring Boot项目中的集成与使用。主要内容包括:1)环境要求与核心依赖配置(springdoc-openapi和Knife4j);2)Swagger3核心配置类编写,涵盖API信息、安全方案和服务器环境配置;3)多环境配置策略,开发环境启用而生产环境禁用;4)常用注解实战,如@Tag接口分组和@Operation接口描述。通过Swagger3可生成清晰可交互的API文档,提升开发效率,降低前后端协作成本。
2025-12-11 08:57:09
704
原创 Jackson 3 迁移核心注意点总结
本文详细梳理 Jackson 3.x 各类配置项的默认值变更与归属迁移,解析每项变更的具体影响,同时给出性能取舍建议与兼容性兜底方案,助力开发者完成 2.x 到 3.x 的平稳迁移。
2025-12-10 08:43:13
659
原创 Spring注入原型Bean,为啥”新“对象“不翼而飞”?
摘要:Spring开发中,单例Bean注入原型Bean时会出现"原型单例化"问题,原因是单例Bean初始化时只注入一次原型实例。本文分析了问题根源并提出3种解决方案:1)使用@Lookup注解实现抽象方法自动代理;2)通过ApplicationContextAware手动获取容器实例;3)采用Spring 4+推荐的ObjectFactory/Provider接口实现优雅解耦。三种方案各具特点,开发者可根据项目需求选择最适合的方式,确保原型Bean真正实现"每次获取都新&quo
2025-12-09 08:39:42
655
原创 Java 反射性能深析:“慢” 的 4 大元凶与提速秘籍
文章摘要: 本文深入剖析Java反射的性能瓶颈及优化策略。反射调用比直接调用慢10倍以上,主要源于方法查找、访问检查、参数处理和JIT优化受限四大瓶颈。JMH测试显示,缓存反射对象可将性能提升4倍,MethodHandle是高性能替代方案。优化建议包括缓存反射对象、关闭访问检查、使用MethodHandle等,适用于框架开发和高频调用场景,兼顾灵活性与性能。
2025-12-08 08:35:11
513
原创 通过泛型限制集合只读或只写
通配符类型可转换类型不可转换类型List<?extends T>T 或 T 的子类T 的父类(除非 T 是 Object)List<?super T>T 或 T 的父类T 的子类无通配符List<T>仅 T 本身(强制转换可能抛运行时异常)其他所有类型(编译器直接报错)?主要用于方法参数定义,允许接收更宽泛的集合类型,提升方法的通用性。示例:定义一个打印A及其子类的方法// 用 extends 接收所有 A 的子类集合,只读不写。
2025-12-05 09:09:35
863
原创 一文吃透 Springfox-Swagger2:接口文档配置 + 注解全解析
本文介绍了在Spring Boot项目中集成Swagger2的方法,详细讲解了依赖引入、核心配置和注解使用。Swagger2能自动生成API文档,支持在线调试,显著提高开发效率。文章首先说明如何引入Swagger2核心依赖和UI依赖,并指出与权限框架整合时的注意事项。随后重点解析了Swagger2配置类的实现,包括接口分组、响应信息配置和文档元信息设置。最后介绍了Swagger2的核心注解及其在控制器层的应用,帮助开发者快速生成规范化的API文档。通过Swagger2的可视化界面,开发者可以便捷地查看和测试
2025-12-04 08:39:11
700
原创 开发中反复查的 Spring Boot 注解,一次性整理到位
本文系统梳理了Spring框架中容器管理和WebMVC的核心注解,包括@Configuration、@Bean、@DependsOn、@ComponentScan、@ConditionalOnBean和@ConditionalOnMissingBean。详细解析了各注解的作用、属性配置及使用场景,通过示例展示如何实现Bean定义、依赖管理、条件加载等核心功能。这些注解是Spring IoC容器实现的关键,开发者掌握其用法能有效提升应用开发效率。
2025-12-03 09:54:32
949
原创 Spring Boot 4.0 迁移核心注意点总结
Spring Boot 4.0 迁移的核心是 “适配基础环境升级、替换废弃依赖 / API、兼容模块化拆分”,优先处理影响项目启动的关键问题(如 JDK 升级、Starter 替换、Web 服务器切换),再逐步优化细节。建议按模块分批迁移,每批迁移后通过单元测试和集成测试验证功能完整性,降低迁移风险。
2025-12-02 10:06:42
625
原创 Spring Boot 启动全解析:4 大关键动作 + 底层逻辑
本文深度解析 Spring Boot 启动核心流程,拆解配置加载、日志初始化、Spring 容器创建与 Bean 注入、嵌入式 Tomcat 启动四大关键动作,结合底层实现逻辑与调用流程,助开发者理解框架原理、定位问题并拓展能力。
2025-12-02 08:35:23
971
原创 抛弃MySQL ?TiDB 的崛起与我们的选择
TiDB与MySQL并非替代关系,而是互补升级方案。MySQL仍是单机关系型数据库的主流选择,而TiDB作为原生分布式数据库,专为海量数据、高并发场景设计,兼容MySQL协议实现平滑迁移。是否需要TiDB取决于业务特性:当核心业务面临TB级数据、百万级并发、强一致性需求或HTAP混合负载时,TiDB能有效解决MySQL的扩展瓶颈。虽然TiDB在成本、复杂度上高于MySQL,但对于追求极致扩展性和实时分析能力的业务,它提供了前瞻性解决方案。技术选型应基于实际业务需求,而非盲目追求新技术。
2025-12-01 08:53:05
529
原创 Spring Boot 核心事件全解析:启动链路 + 监听器作用详解
摘要 Spring Boot 提供了多种核心事件类型,涵盖应用启动全生命周期,包括 ApplicationStartingEvent(启动初期)、ApplicationEnvironmentPreparedEvent(环境准备)、ApplicationContextInitializedEvent(上下文初始化)、ApplicationPreparedEvent(Bean 定义加载)、ContextRefreshedEvent(容器刷新完成)、ApplicationReadyEvent(应用就绪)等。不同事
2025-11-28 08:40:33
558
原创 揭秘 Spring Bean 生命周期:9 大阶段 + 关键扩展点
本文以对话形式拆解 Spring Bean 生命周期 9 大核心阶段,详解 InstantiationAwareBeanPostProcessor 等关键扩展接口,结合实战场景与单例 / 原型 Bean 差异,让底层逻辑直观易懂。
2025-11-27 12:19:12
972
原创 深入解析 Spring Security 核心组件与认证授权流程
Spring Security是Java企业级应用开发中重要的安全框架,本文深入解析其核心组件和流程。核心组件包括认证过滤器、认证管理器、用户信息服务、异常处理等,共同完成身份验证和权限控制。认证流程通过拦截登录请求、验证用户信息并存储认证状态。授权流程则通过权限投票机制决定资源访问权限,处理未认证或无权限的异常情况。整体上,Spring Security通过组件协作实现安全防护,保障系统稳定和数据隐私。
2025-11-25 08:55:18
800
原创 一文吃透 Spring Boot Validation 底层实现逻辑
Spring Boot Validation 核心架构解析 Spring Boot Validation 采用三层架构设计: 规范层:基于 JSR-380 标准定义校验注解和接口 实现层:Hibernate Validator 提供具体实现 集成层:Spring 通过自动配置和 MVC 集成实现校验功能 核心工作流程: ValidationAutoConfiguration 自动配置 LocalValidatorFactoryBean 和 MethodValidationPostProcessor 请求进入
2025-11-21 08:49:15
663
原创 接口校验神器!Spring Boot Validation 超全使用指南
Spring Boot 参数校验指南 摘要: 本文介绍了Spring Boot中参数校验的完整实现方案。通过引入spring-boot-starter-validation依赖,开发者可以便捷地实现请求参数校验。主要内容包括:1)对象参数校验三步法:标记@Valid注解、定义校验规则注解和全局异常处理;2)基本类型参数校验需配合@Validated使用;3)统一异常处理机制,区分对象参数和基本参数校验的不同异常类型(BindException与ConstraintViolationException)。校验
2025-11-20 08:43:21
567
原创 揭秘 Spring Boot 事务:动态增强的底层实现与核心组件
本文深入分析了Spring Boot动态事务的实现机制,从问题本质、基础知识到具体实现流程和底层原理进行了系统阐述。动态事务的核心是通过"注解标记+解析器"模式实现,开发者仅需使用@Transactional注解标记方法,Spring Boot自动完成事务管理。实现流程包括:目标对象纳入IoC容器管理、方法添加事务标记、自动加载事务拦截器、AOP动态代理织入事务逻辑。底层依托TransactionAutoConfiguration自动配置和AOP动态代理技术,通过@EnableTrans
2025-11-19 08:57:01
548
原创 @Transactional 事务方法失效?
Spring事务内部调用失效问题及其解决方案 问题现象:在同一个Service类中,方法内部调用@Transactional标注的方法时事务不生效,这是由于Spring AOP基于代理机制实现,内部调用会绕过代理对象。 解决方案: 自我注入:通过@Autowired注入代理对象调用 从上下文获取代理:实现ApplicationContextAware接口获取代理 代码重构:将事务方法拆分到单独类 延伸问题:@Configuration类的@Bean方法内部调用可触发代理,因为Spring对配置类采用特殊代理
2025-11-18 08:50:53
517
原创 秒杀面试!MyBatis-Spring-Boot 初始化流程深度拆解
MyBatis-Spring-Boot 整合核心流程 摘要:MyBatis-Spring-Boot-Starter 通过自动配置机制简化整合流程。启动时自动构建SqlSessionFactory(加载全局配置和映射文件)、SqlSessionTemplate(线程安全执行器)和MapperScanner(接口扫描)。通过@MapperScan注解扫描Mapper接口并生成代理对象,配合yml配置实现零XML编码。核心原理是MybatisAutoConfiguration自动装配数据源和MyBatis组件,最
2025-11-14 09:06:34
829
原创 深挖 Spring Boot AOP 底层:从注解到代理全解析
本文详细介绍了Spring Boot中AOP的核心机制与实现。首先阐述了AOP通过横切关注点分离提升代码复用性的价值,随后从实战角度演示了集成AOP的三步流程:引入依赖、定义切面(包含五种通知类型)和启用自动代理。关键实现步骤包括扫描目标Bean、切点匹配筛选及将通知封装为拦截器。文章通过日志监控的完整示例,展示了AOP拦截业务方法时的执行顺序和参数处理能力,为开发者提供了一套完整的AOP应用方案。
2025-11-12 13:48:09
657
原创 用 double 算钱差点出大错!
文章摘要: 金融电商开发中常见的小数计算精度问题源于浮点数特性,如0.1+0.2≠0.3。解决方案是使用BigDecimal,关键点包括:必须用String/valueOf构造而非double;除法需指定舍入模式;比较用compareTo而非equals。实战案例展示了电商订单计算的完整流程,强调涉及金额等关键数据时必须使用BigDecimal以确保精度。最后总结了5条黄金法则,包括构造方式、运算规范和性能权衡等注意事项。
2025-11-11 17:06:37
364
原创 高频面试题:Spring 依赖注入怎么实现的?3 个注解 + 2 个处理器,原理其实很简单
本文深入剖析了Spring框架中三个核心依赖注入注解@Autowired、@Value和@Resource的工作机制。首先对比了三者的功能差异和使用场景,通过代码示例展示其具体应用。随后详细解析了依赖注入的通用实现逻辑,包括Bean创建的生命周期扩展点InstantiationAwareBeanPostProcessor的作用机制。重点阐述了@Autowired和@Value的处理流程,说明AutowiredAnnotationBeanPostProcessor如何完成注解识别、元数据封装和资源注入的全过程
2025-11-11 15:29:01
719
原创 Spring 配置解析与 @Value 注入核心流程详解
本文深入解析了Spring框架中配置文件读取与@Value属性注入的核心机制。通过分析StringValueResolver、ConfigFileApplicationListener等5个关键对象的协作关系,揭示了从配置文件加载到Bean属性注入的完整流程。文章详细阐述了配置处理的5步闭环:配置文件读取、组件注册、解析器构建、Bean创建拦截和属性注入,并结合源码对每个步骤的具体调用链路进行了深度拆解,展现了Spring配置解析与属性注入的复杂而精妙的设计原理。
2025-11-10 16:12:13
1076
原创 InnoDB 表查询默认按主键排序?
摘要:MySQL的InnoDB引擎中,未使用ORDER BY的查询结果常看似按主键排序,但这并非SQL标准保证,而是聚簇索引物理存储的特性表现。实际上,在二级索引查询、并行处理或数据库维护时,顺序可能被打乱。本文剖析了这一普遍误解,强调依赖隐式排序的风险,指出唯一可靠的方法就是显式使用ORDER BY子句。开发中应避免依赖默认顺序,始终明确指定排序条件,以确保查询结果的确定性和代码的健壮性。(149字)
2025-11-10 14:46:12
736
原创 Spring Boot 配置优先级完全解析:从本地文件到Nacos远程配置
本文全面剖析了Spring Boot应用的配置加载优先级体系,涵盖命令行参数、环境变量、Nacos远程配置和本地文件配置等多种配置源。核心原则包括就近原则、特定性原则和外部化原则,优先级从高到低依次为运行时配置、远程配置中心、本地文件配置和代码默认配置。重点分析了Nacos与本地配置的关系,指出Nacos默认覆盖本地配置且Profile特异性优先。同时比较了YAML与Properties文件的加载顺序,并提供了配置控制、环境隔离等最佳实践方案。通过掌握这些优先级规则,开发者可以构建灵活安全的配置管理体系。
2025-11-10 14:43:37
435
原创 从 “完整对象” 视角看Spring 循环依赖
Spring应用开发中,循环依赖是常见但易引发困惑的技术点。文章从本质出发,解析循环依赖的核心矛盾在于"完整对象"的构建顺序问题。详细拆解了Spring中循环依赖的两种失败场景:构造函数循环依赖导致的实例化阶段失败和初始化方法触发依赖导致的初始化阶段失败,并给出了使用ObjectProvider延迟依赖获取和延迟初始化逻辑的解决方案。最后揭示了Spring处理循环依赖的核心机制是三级缓存,而非常见的两级缓存认知。本文帮助开发者系统性掌握循环依赖这一核心知识点,解决实际开发中的BeanCu
2025-11-10 13:26:52
455
原创 Spring Boot @ConfigurationProperties 深度解析:配置绑定核心机制与实践
本文深入解析Spring Boot中的@ConfigurationProperties注解,从基础使用到核心原理完整剖析。主要内容包括:1)基础应用实践,展示如何将YAML配置映射为Java Bean,强调前缀定义和Getter/Setter的必要性;2)核心组件分析,重点讲解ConfigurationPropertiesBindingPostProcessor和EnableConfigurationPropertiesRegistrar的工作原理;3)底层实现流程,揭示配置绑定的完整生命周期;4)高级特性
2025-11-10 13:25:14
772
原创 Spring MVC 核心工作原理:DispatcherServlet 全流程深度解析
摘要:Spring MVC框架的核心Web模块DispatcherServlet贯穿应用启动到请求处理的全生命周期。本文从四个维度解析其工作原理:1)概述前端控制器模式的设计思想;2)详述DispatcherServlet的加载机制,包括Spring Boot自动配置与Tomcat注册流程;3)剖析请求处理流程,说明其协调多个功能组件完成请求解析、处理和响应的全链路机制;4)分析关键组件如HandlerMapping、HandlerAdapter等的作用及默认实现。理解这些机制是掌握Spring MVC核心
2025-11-10 13:23:53
1234
1
原创 90% 开发者踩过的坑:事务嵌套第三方接口的风险破解与实践
【数据库事务与第三方服务调用的架构陷阱与解决方案】 核心问题:在数据库事务中混合第三方服务调用会导致连接池耗尽、数据不一致和死锁风险。典型场景如订单创建流程中同时处理数据库操作与支付、短信等外部调用。 主要风险: 长时间外部调用阻塞数据库连接,导致连接池耗尽 事务回滚时外部调用无法回滚,造成数据不一致 加锁期间进行外部调用容易引发死锁 解决方案: 事务拆分(推荐方案):将流程分为短事务处理数据库操作+异步处理外部调用,使用补偿机制保障一致性 本地事务表:通过记录任务状态实现最终一致性,配合定时任务重试机制
2025-11-10 13:10:07
512
原创 新值依赖旧值?并发更新的“坑”
本文探讨了高并发应用中处理库存扣减等依赖旧值计算场景的解决方案。核心问题在于"读-算-写"非原子操作导致的竞态条件,可能引发超卖、少扣等问题。文章提出两种主要技术路线:悲观锁(数据库行锁和分布式锁)和乐观锁(版本号控制)。数据库行锁通过SELECT FOR UPDATE锁定数据,适用于单服务场景;分布式锁如Redisson则适用于跨服务场景。乐观锁通过版本号机制检查数据冲突,适合低并发场景。文章还指出了常见陷阱,如悲观锁的事务管理、索引使用以及分布式锁的粒度控制等。这些方案从单机到分布式
2025-11-07 16:07:54
469
原创 BeanPostProcessor失效?
摘要:本文分析了一个常见Spring Boot问题:通过BeanPostProcessor修改RabbitProperties配置后,RabbitTemplate连接地址未改变。核心原因是测试类ServiceTest同时实现了BeanPostProcessor和依赖RabbitTemplate,导致依赖链倒置,使得配置修改时机过晚。文章详细介绍了BeanPostProcessor工作原理和RabbitMQ初始化流程,并提供了两种解决方案:1) 使用@TestPropertySource直接覆盖配置;2) 创
2025-11-07 16:06:17
464
原创 Spring Cloud 加载 Nacos 配置:核心组件、流程与机制解析
摘要:本文深入剖析Spring Cloud应用加载Nacos配置的底层机制,聚焦核心依赖组件、加载流程与关键机制。通过BootstrapApplicationListener触发引导上下文创建,由BootstrapImportSelectorConfiguration通过SPI机制加载Nacos配置类,最终由PropertySourceBootstrapConfiguration执行配置加载与合并。重点解析了引导上下文与主上下文分离的设计优势,确保配置优先加载;以及Spring SPI机制的扩展性,支持灵活
2025-10-30 17:24:17
938
原创 RabbitMQ Unacked 消息深度解析:机制、问题与解决方案
Unacked 消息没有重新入队通常表明消费者处于"假死"状态——连接保持活跃但实际已无法正常处理消息。这种情况比消费者完全崩溃更危险,因为 RabbitMQ 会一直等待确认。关键预防措施:设置合理的超时机制 - 避免无限期等待优化 Prefetch Count - 避免过多消息被单个消费者占用完善异常处理 - 确保所有路径都有确认操作实施监控告警 - 及时发现处理停滞配置死信队列 - 处理无法正常消费的消息通过以上措施,可以大大降低 Unacked 消息堆积的风险,构建更加健壮可靠的消息处
2025-10-25 13:58:18
515
原创 Spring Boot Bean 加载机制完全解析:从基础到高级实践
本文深入解析Spring Boot的核心Bean加载机制,涵盖基础概念与高级实践。主要内容包括:1)基础组件扫描与核心注解(@Component、@Service等)的使用;2)配置类方式创建复杂Bean;3)自动配置原理与实现;4)条件化加载的多种方式(类路径、配置属性、环境等);5)外部配置绑定技术。文章通过大量代码示例,详细展示了Spring Boot如何发现、创建和管理Bean,帮助开发者掌握这一关键技术,构建更健壮的应用系统。
2025-10-23 11:29:21
608
1
原创 Spring Boot 多数据源与事务管理深度解析:从原理到实践
本文深入探讨了Spring Boot中多数据源的配置与管理技术。首先分析了数据源自动配置机制和事务管理加载原理,包括依赖触发流程、AOP代理机制等核心组件。接着详细介绍了MyBatis多数据源实现方案,包括项目结构规划、配置文件设置以及主数据源的具体配置方法。通过代码示例展示了如何手动配置多数据源,并说明了业务层如何正确使用不同数据源的Mapper接口。文章为企业级应用中常见的数据库读写分离、多租户架构等场景提供了实用的技术解决方案。
2025-10-22 17:03:54
472
原创 Spring 事件机制详解:从基础使用到高级应用
本文介绍了Spring事件机制的使用与原理。主要内容包括:1)使用步骤:创建继承ApplicationEvent的事件对象,用@EventListener标注监听器方法,通过ApplicationContext发布事件;2)核心原理:涉及ApplicationEvent、@EventListener、EventListenerFactory等组件,以及事件发布执行流程;3)增强处理:通过自定义注解和实现EventListenerFactory扩展功能。该机制采用观察者模式,支持同步/异步处理,适用于业务解耦
2025-10-22 15:15:16
956
原创 Spring Cloud Nacos 配置加载核心组件与流程详解
Spring Cloud应用加载Nacos配置的核心流程主要依赖三个组件:BootstrapApplicationListener负责创建引导上下文,BootstrapImportSelectorConfiguration读取配置类信息,PropertySourceBootstrapConfiguration执行外部配置加载。流程通过引导上下文优先加载配置,借助spring.factories的SPI机制实现灵活扩展。关键设计包括引导上下文与主应用上下文分离,确保配置在主应用启动前就位,以及通过SPI机制实
2025-10-21 17:56:44
274
原创 Spring Boot 配置优先级完全解析:从本地文件到Nacos远程配置
本文详细解析Spring Boot配置加载顺序与优先级规则。核心原则包括:就近原则、特定性原则和外部化原则。配置源优先级从高到低依次为:命令行参数、环境变量、远程配置中心(如Nacos)、外部配置文件、内部配置文件等。其中Nacos默认覆盖本地配置,带环境后缀的配置优先级更高。文件格式优先级为YAML>Properties。最佳实践建议基础配置放bootstrap.yml,环境相关配置用Nacos管理,开发环境可设置本地配置优先。通过合理运用优先级规则,可构建灵活安全的配置管理体系。
2025-10-16 13:53:24
1015
原创 Spring ApplicationEventPublisher 异步处理与消息队列全面解析
本文介绍了Spring中ApplicationEventPublisher的事件处理机制。默认采用同步方式,会阻塞主线程直到监听器执行完成。文章提供了三种异步处理方案:使用@Async注解、自定义线程池和全局异步配置。即使在同步场景下,事件驱动架构也能实现业务解耦、提高可扩展性和可维护性。通过对比直接调用与事件驱动方案的差异,分析了事件驱动在耦合度、可测试性等方面的优势。最后比较了ApplicationEventPublisher异步处理与消息队列的适用场景,指出前者适合应用内事件处理,后者更适合跨系统通信
2025-10-15 13:14:13
956
原创 泛型集合的添加与获取
除了null,无法添加其他对象,可以通过A或Object定义向上转型来读取除了null和A,无法添加其他对象,可以通过Object向上转型或强制转换来读取只有 ? extend/super 才能被强转,强转为边界或满足边界限定条件的类型 + ?extends/super 泛型集合主要用在方法参数的定义上,以便更宽泛的集合入参 + ?extends/super 作为方法参数时,能传入的参数类型和强转规则一样
2024-09-26 15:52:34
309
原创 nacos 配置读取流程
BootstrapApplicationListener将PropertySourceBootstrapConfiguration 添加到项目启动类SpringApplication中。读取spring-cloud-context.jar spring.factories中加载PropertySourceBootstrapConfiguration。向SpringApplication添加BootstrapApplicationListener。
2024-09-20 15:57:18
783
Spring Boot JWT登录授权使用指南(无感刷新)源码
2025-12-11
spring-boot swagger3 使用示例项目
2025-12-10
java-springmvc-比较对象属性值是否改变
2025-11-07
java-asm,反射-实现spring调用controller方法小工具
2025-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅