# forgeboot-trace-spring-boot-starter
> 🔍 分布式调用链追踪模块,基于上下文感知系统实现 requestId / traceId 的自动生成、注入与传播,适配协程、Reactor、线程池等多种执行模型。
---
## 🧩 简介
`forgeboot-trace-spring-boot-starter` 是 ForgeBoot 提供的轻量级调用链追踪模块,致力于在服务内部及分布式场景中提供统一的 traceId 管理机制。
该模块依赖 `forgeboot-context` 实现 traceId 的透明传递,支持与日志系统(MDC)、Web 框架(Servlet / WebFlux)无缝集成。
---
## ✨ 核心功能
- ✅ 支持全局唯一的 traceId/requestId 自动生成与注入
- ✅ 与日志系统集成(MDC 支持)
- ✅ 支持从 HTTP 请求头中自动提取 traceId
- ✅ 基于 `forgeboot-context` 实现跨线程 / 协程 / Reactor 任务 traceId 传递
- ✅ 可配置的 traceId 生成策略(内置 UUID,支持扩展如 OpenTelemetry)
- ✅ 适配 Spring Boot 自动装配,开箱即用
---
## 📦 引入依赖
使用 Maven:
```xml
io.github.gewuyou
forgeboot-trace-spring-boot-starter
${version}
```
使用 Gradle:
```groovy
implementation "io.github.gewuyou:forgeboot-trace-spring-boot-starter:${version}"
```
---
## 🚀 快速开始
1. 引入依赖并启用自动配置(Spring Boot 自动生效)
2. 在日志配置中添加 traceId(以 logback 为例):
```xml
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level traceId=%X{traceId} %logger{36} - %msg%n
```
3. 可在任何业务代码中通过上下文访问:
```kotlin
val traceId = ContextHolder.get("traceId")
```
---
## ⚙️ 构建方式
使用 Gradle 命令进行构建发布:
```bash
./gradlew :forgeboot-trace:build
```
---
## 📄 许可
本项目采用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 开源协议。
---
## 📬 联系作者
由 [@gewuyou](https://github.com/gewuyou) 维护。
欢迎提交 Issue 或 PR 改进本模块!