Java 日志里记什么、不记什么、message 怎么写、结构化字段如何设计;也整理我在 Spring Boot 项目里落地这些约定时的一些取舍。
Posts for: #spring-boot
微服务契约共享的 Tradeoff:从 Monorepo 到 Polyrepo,该共享到哪一步
BFF 与微服务之间到底该共享到哪一步?Shop Platform 的 monorepo 实践之外,共享 contracts、共享 client 和契约测试在 polyrepo 下各有 tradeoff,我目前更倾向其中一种组合。
Java 21→25 与 Spring Boot 3.5→4.0:为什么升级,怎么升级
Java 21→25 和 Spring Boot 3.5→4.0 值不值得升,先看版本维护周期与语言、框架层的变化;真上手时,手动迁移和 OpenRewrite 自动化两条路径的取舍也不一样。
把单体数据库迁移拆成三阶段:Liquibase Split POC 的落地结构与踩到的坑
用 Spring Boot 3.5 + Java 25 + Liquibase + PostgreSQL 做了一个可运行 POC,验证如何把单体应用的数据库迁移拆成 Phase 1 单体、Phase 2 共享库拆 changelog、Phase 3 独立数据库三阶段,并记录实际踩坑与验证结果。
How Many Kafka Connections Does Your Spring Boot App Actually Use?
A practical formula for calculating Kafka TCP connection counts in Spring Boot, covering producers, consumers, AdminClient, and how to choose the right Confluent Cloud plan.
用 Java 25 结构化并发 + Spring AI 搭多 Agent 数学解题管线:新加坡数学 AI 辅导 Phase 1
多 Agent 数学解题管线的第一期用 Java 25 的 Structured Concurrency 加 Spring AI 2.0 和 Ollama 搭起来,Spring Boot 4.0 与 Gradle 9 的兼容性问题在过程中一起解决。
Reactive Redis 与 Lettuce SharedLock 的连锁问题:make coverage 卡死排查
集成测试卡在 make coverage 阶段,第一眼看到的是连接池超时,真正让进程挂住的是 Reactive Redis 下 Lettuce SharedLock 的自旋,两层问题得分开修。
Spring Boot 3.5 + Java 25 + React:在 K8s 里跑通一套跨链路 OpenFeature flag
不用 Spring Cloud Config Server 也能把 feature flag 做出来:Gateway、微服务和 React 三个角色共用同一个 flagd,热加载方案选型和 OFREP 跨栈一致性都在 kind 环境里验证过。
Spring Boot 3.5 BFF 出站 HTTP 客户端:连接池、超时与 HTTP/2 实战
BFF 调用多个下游 microservice 时,连接池要不要按服务隔离?connectTimeout / readTimeout 怎么 per-service 配置?Spring Boot 3.5 内部服务用 h2c 要避哪些坑?把这三个常见问题理清楚。
shop-starter-http-client:Spring Boot 3.5 微服务 HTTP 客户端基础设施设计
Spring Boot 3.5 + Java 25 微服务下,记录我如何用一个共享 starter 统一出站 HTTP 客户端的身份传播、错误语义、可观测性和弹性。