- 起因接口参数校验,最开始我的做法就是 Controller 方法参数上加个 @Valid,实体类字段上标几个 @NotNull,报错了就返回 400。能用,但用久了发现几个问题:报错信息是英文的、嵌套对象不校验、分组场景没法处理、自定义规则写起来很别扭。这篇把校验这块我实际用过的东西记一下。 基础的那套依赖先确认有:<dependency> <groupId>org.springfr... 起因接口参数校验,最开始我的做法就是 Controller 方法参数上加个 @Valid,实体类字段上标几个 @NotNull,报错了就返回 400。能用,但用久了发现几个问题:报错信息是英文的、嵌套对象不校验、分组场景没法处理、自定义规则写起来很别扭。这篇把校验这块我实际用过的东西记一下。 基础的那套依赖先确认有:<dependency> <groupId>org.springfr...
- 多租户是 SaaS 系统的地基。这篇文章整理一套在 Spring Boot 3 + MyBatisPlus 环境下落地多租户隔离的完整做法,包含租户识别、SQL 自动改写、跨租户查询和几个容易踩的坑。 隔离级别怎么选 三种模式,选错了后期改造成本极高: 模式 隔离程度 成本 适用 独立数据库 最高 多租户是 SaaS 系统的地基。这篇文章整理一套在 Spring Boot 3 + MyBatisPlus 环境下落地多租户隔离的完整做法,包含租户识别、SQL 自动改写、跨租户查询和几个容易踩的坑。 隔离级别怎么选 三种模式,选错了后期改造成本极高: 模式 隔离程度 成本 适用 独立数据库 最高
- Spring Boot 自动配置:它是怎么"自动"的?用 Spring Boot 最爽的体验大概就是:引入一个 starter 依赖,配几个属性,应用就能跑起来。不用像以前那样写一堆 XML 配置。但很多人只是"会用",并不清楚它到底是怎么自动装配的。今天就来拆解一下这个"魔法"。 入口:@SpringBootApplication每个 Spring Boot 项目都有一个启动类,上面标着... Spring Boot 自动配置:它是怎么"自动"的?用 Spring Boot 最爽的体验大概就是:引入一个 starter 依赖,配几个属性,应用就能跑起来。不用像以前那样写一堆 XML 配置。但很多人只是"会用",并不清楚它到底是怎么自动装配的。今天就来拆解一下这个"魔法"。 入口:@SpringBootApplication每个 Spring Boot 项目都有一个启动类,上面标着...
- 从执行时机、作用范围、能力边界三个维度给出选型依据。 从执行时机、作用范围、能力边界三个维度给出选型依据。
- 针对微服务在云容器引擎(CCE/K8s)中横向扩容为多副本后,Spring 原生的 @Scheduled 定时任务在多个 Pod 中同时触发,导致数据重复结算、接口被刷爆的痛点,本文提供一套基于 ShedLock 与 Redis 的无侵入式工程解法,实现定时任务的轻量级分布式互斥。 针对微服务在云容器引擎(CCE/K8s)中横向扩容为多副本后,Spring 原生的 @Scheduled 定时任务在多个 Pod 中同时触发,导致数据重复结算、接口被刷爆的痛点,本文提供一套基于 ShedLock 与 Redis 的无侵入式工程解法,实现定时任务的轻量级分布式互斥。
- 用 Jakarta Validation 搭一套可复用的校验与统一错误响应。 用 Jakarta Validation 搭一套可复用的校验与统一错误响应。
- 沿 doDispatch 逐行拆解一次 HTTP 请求的完整处理链。 沿 doDispatch 逐行拆解一次 HTTP 请求的完整处理链。
- 拆解 @EnableAutoConfiguration 的加载链与条件装配机制。 拆解 @EnableAutoConfiguration 的加载链与条件装配机制。
- 上一篇文章我把 JDK21、MySQL、RabbitMQ 全装好了,今天直接上手 Spring Boot 项目初始化。我见过太多新手(包括当年的我)在 IDEA 里新建一个普通 Maven 项目,然后手动写十几个依赖,最 上一篇文章我把 JDK21、MySQL、RabbitMQ 全装好了,今天直接上手 Spring Boot 项目初始化。我见过太多新手(包括当年的我)在 IDEA 里新建一个普通 Maven 项目,然后手动写十几个依赖,最
- 起因写代码的时候加了个注解,心里觉得稳了,跑起来发现压根没起作用。排查半天,原因五花八门:有的被同类调用绕过去了,有的被代理机制吃了,有的干脆得配合另一个注解才能用。这篇记几个我实际撞过的,都是“看着没问题、跑起来不对”的类型。 @Async 加了还是同步方法上标了 @Async,调用方等了半天,返回值也拿到了,怎么看都是同步执行的。两种常见原因。一种是同类调用。this.asyncMet... 起因写代码的时候加了个注解,心里觉得稳了,跑起来发现压根没起作用。排查半天,原因五花八门:有的被同类调用绕过去了,有的被代理机制吃了,有的干脆得配合另一个注解才能用。这篇记几个我实际撞过的,都是“看着没问题、跑起来不对”的类型。 @Async 加了还是同步方法上标了 @Async,调用方等了半天,返回值也拿到了,怎么看都是同步执行的。两种常见原因。一种是同类调用。this.asyncMet...
- 用可复现的错误代码讲透 7 种传播行为与 8 类事务失效。 用可复现的错误代码讲透 7 种传播行为与 8 类事务失效。
- 针对微服务网关使用无状态 JWT(JSON Web Token)鉴权时,因 Token 无法在服务端主动销毁,导致遇到账号被盗或封禁时无法“瞬间踢用户下线”的痛点,本文提供一套基于 Access/Refresh 双 Token 机制与 Redis JTI 黑名单的轻量级拦截解法。 针对微服务网关使用无状态 JWT(JSON Web Token)鉴权时,因 Token 无法在服务端主动销毁,导致遇到账号被盗或封禁时无法“瞬间踢用户下线”的痛点,本文提供一套基于 Access/Refresh 双 Token 机制与 Redis JTI 黑名单的轻量级拦截解法。
- 讲清 AOP 的织入时机、两种代理的取舍,以及代理失效的根因。 讲清 AOP 的织入时机、两种代理的取舍,以及代理失效的根因。
- 拆解三级缓存的存取时机,说明哪种循环依赖能解、哪种不能。 拆解三级缓存的存取时机,说明哪种循环依赖能解、哪种不能。
- 从 refresh() 到销毁,完整拆解 Bean 的一生与关键扩展点。 从 refresh() 到销毁,完整拆解 Bean 的一生与关键扩展点。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签