refactor(trace): 重构 TraceRequestIdProvider 并调整依赖

- 在 TraceAutoConfiguration 中添加 ContextHolder依赖
- 更新 traceRequestIdProvider 方法以使用 ContextHolder
- 修改 TraceRequestIdProvider 类以使用 ContextHolder- 调整 forgeboot-trace-impl 的构建配置,将 context-starter 依赖改为 compileOnly
- 移除 forgeboot-trace-impl 中的 spring-boot-configuration-processor 依赖
This commit is contained in:
gewuyou 2025-06-22 20:11:29 +08:00
parent f6794fd14f
commit ed8bb7cc91
4 changed files with 11 additions and 8 deletions

View File

@ -4,6 +4,7 @@ plugins {
dependencies {
implementation(platform(libs.springBootDependencies.bom))
implementation(libs.springBoot.autoconfigure)
implementation(project(Modules.Context.STARTER))
compileOnly(platform(libs.springCloudDependencies.bom))
compileOnly(libs.springBootStarter.web)
compileOnly(libs.springBootStarter.webflux)

View File

@ -4,6 +4,7 @@ package com.gewuyou.forgeboot.trace.autoconfig
import com.gewuyou.forgeboot.context.api.ContextFieldContributor
import com.gewuyou.forgeboot.context.api.entities.FieldDef
import com.gewuyou.forgeboot.context.api.enums.Scope
import com.gewuyou.forgeboot.context.impl.ContextHolder
import com.gewuyou.forgeboot.core.extension.log
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
import com.gewuyou.forgeboot.trace.api.config.TraceProperties
@ -24,7 +25,7 @@ import java.util.UUID
@Configuration
@EnableConfigurationProperties(TraceProperties::class)
class TraceAutoConfiguration(
private val traceProperties: TraceProperties
private val traceProperties: TraceProperties,
) {
/**
* 请求ID提供者用于生成请求ID
@ -34,9 +35,9 @@ class TraceAutoConfiguration(
*/
@Bean
@ConditionalOnMissingBean(RequestIdProvider::class)
fun traceRequestIdProvider(): TraceRequestIdProvider {
fun traceRequestIdProvider(contextHolder: ContextHolder): TraceRequestIdProvider {
log.info("TraceRequestIdProvider 已创建!")
return TraceRequestIdProvider(traceProperties)
return TraceRequestIdProvider(traceProperties,contextHolder)
}
@Bean
fun requestContributor() = ContextFieldContributor {

View File

@ -1,7 +1,7 @@
dependencies {
implementation(platform(libs.springBootDependencies.bom))
api(project(Modules.Core.EXTENSION))
api(project(Modules.Context.STARTER))
compileOnly(project(Modules.Context.STARTER))
compileOnly(project(Modules.TRACE.API))
compileOnly(platform(libs.springCloudDependencies.bom))
compileOnly(libs.springBootStarter.webflux)
@ -9,5 +9,4 @@ dependencies {
// Spring Cloud OpenFeign (Compile Only)
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
compileOnly(libs.springCloudStarter.openfeign)
kapt(libs.springBoot.configuration.processor)
}

View File

@ -1,6 +1,7 @@
package com.gewuyou.forgeboot.trace.impl.provider
import com.gewuyou.forgeboot.context.impl.StringContextHolder
import com.gewuyou.forgeboot.context.api.extension.get
import com.gewuyou.forgeboot.context.impl.ContextHolder
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
import com.gewuyou.forgeboot.trace.api.config.TraceProperties
@ -12,7 +13,8 @@ import com.gewuyou.forgeboot.trace.api.config.TraceProperties
* @author gewuyou
*/
class TraceRequestIdProvider(
private val traceProperties: TraceProperties
private val traceProperties: TraceProperties,
private val contextHolder: ContextHolder
): RequestIdProvider {
/**
* 获取请求ID
@ -22,6 +24,6 @@ class TraceRequestIdProvider(
* @return 请求ID的字符串表示
*/
override fun getRequestId(): String {
return StringContextHolder.get(traceProperties.requestIdMdcKey) ?:throw RuntimeException("requestId is null")
return contextHolder[traceProperties.requestIdMdcKey] ?:throw RuntimeException("requestId is null")
}
}