整理一次 Java 21→25 与 Spring Boot 3.5→4.0 的升级思路:动因、核心变化,以及手动迁移与 OpenRewrite 自动化两条路径上的取舍。
Posts for: #java
Java 微服务在 K8s 上的运行时基线(2026):镜像、探针、滚动与可观测
整理 Java 25 + Spring Boot 3.5 微服务上 Kubernetes 时的一份运行时基线:镜像怎么打、探针怎么配、优雅停机怎么对齐、滚动与回滚怎么做、可观测性怎么接入。重点是把现状和差距一起写出来。
ArchUnit 作为 Code Agent 时代的 Harness:微服务、Monorepo 与普通 Repo 的落地方式
在 code agent 普及的背景下,我在 Shop Platform 用 ArchUnit 作为可执行的 harness。本文结合实际实践,说明它在微服务、monorepo 与普通 repo 中的落地方式。
用 Maven Archetype 管理微服务 Scaffold:为什么我这里暂时没用 Spring Initializr
在多模块 Maven 单仓微服务平台中,我们选择了 Maven Archetype 而非 Spring Initializr 来管理服务脚手架。本文说明选型背后的原因、六类 Archetype 的分层逻辑、为什么我倾向给 Archetype 本身也加测试,以及版本维护策略。
Kubernetes VPA InPlace Resize:原理、实战与避坑
基于 Kubernetes 1.35 官方文档和实操验证,梳理 VPA 的 InPlaceOrRecreate 模式、原地调容的工作链路,以及落地时最容易踩的坑。
Spring Boot 3.5 Tracing 实践记录:从接入到生产观察
结合一次 Spring Boot 3.5 tracing 接入整理的实践记录:自动配置覆盖范围、自定义埋点、Kafka/Redis/DB 组件接入、采样策略、PII 处理,以及用 ArchUnit 约束常见误用。
Spring Boot 3.4+ 结构化日志实践记录:用 ECS + Fluent API
记录我用 Spring Boot 3.4+ 内建的 ECS 结构化日志支持替代大部分手写 logback-spring.xml 配置的过程,并结合 SLF4J Fluent API 让日志在 OpenSearch 中更容易查询和聚合。
Java 日志开发实践整理
整理一份偏实践向的 Java 日志记录笔记:记录什么、不记录什么、message 怎么写、结构化字段如何设计;也顺手记录我在 Spring Boot 项目里落地这些约定时的一些取舍。
Spring Boot 应用 Metrics 埋点实践记录(2026)
以 Spring Boot 3.5 + Micrometer 为基础,整理一次应用层 Metrics 埋点实践:自动埋点覆盖范围、@Observed 注解用法、高低基数字段设计、手动 Observation API,以及与 Prometheus 和 OTel 的关系。
K8s 容器化 Java 应用 JVM 配置笔记:JDK_JAVA_OPTIONS、MaxRAMPercentage 与 GC 选择
结合一份 2026 年调查和我自己的阅读笔记,整理 K8s 容器化 Java 应用里三个常见 JVM 配置决策:JDK_JAVA_OPTIONS、MaxRAMPercentage,以及 GC 选择。