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 { dependencies {
implementation(platform(libs.springBootDependencies.bom)) implementation(platform(libs.springBootDependencies.bom))
implementation(libs.springBoot.autoconfigure) implementation(libs.springBoot.autoconfigure)
implementation(project(Modules.Context.STARTER))
compileOnly(platform(libs.springCloudDependencies.bom)) compileOnly(platform(libs.springCloudDependencies.bom))
compileOnly(libs.springBootStarter.web) compileOnly(libs.springBootStarter.web)
compileOnly(libs.springBootStarter.webflux) 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.ContextFieldContributor
import com.gewuyou.forgeboot.context.api.entities.FieldDef import com.gewuyou.forgeboot.context.api.entities.FieldDef
import com.gewuyou.forgeboot.context.api.enums.Scope 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.core.extension.log
import com.gewuyou.forgeboot.trace.api.RequestIdProvider import com.gewuyou.forgeboot.trace.api.RequestIdProvider
import com.gewuyou.forgeboot.trace.api.config.TraceProperties import com.gewuyou.forgeboot.trace.api.config.TraceProperties
@ -24,7 +25,7 @@ import java.util.UUID
@Configuration @Configuration
@EnableConfigurationProperties(TraceProperties::class) @EnableConfigurationProperties(TraceProperties::class)
class TraceAutoConfiguration( class TraceAutoConfiguration(
private val traceProperties: TraceProperties private val traceProperties: TraceProperties,
) { ) {
/** /**
* 请求ID提供者用于生成请求ID * 请求ID提供者用于生成请求ID
@ -34,9 +35,9 @@ class TraceAutoConfiguration(
*/ */
@Bean @Bean
@ConditionalOnMissingBean(RequestIdProvider::class) @ConditionalOnMissingBean(RequestIdProvider::class)
fun traceRequestIdProvider(): TraceRequestIdProvider { fun traceRequestIdProvider(contextHolder: ContextHolder): TraceRequestIdProvider {
log.info("TraceRequestIdProvider 已创建!") log.info("TraceRequestIdProvider 已创建!")
return TraceRequestIdProvider(traceProperties) return TraceRequestIdProvider(traceProperties,contextHolder)
} }
@Bean @Bean
fun requestContributor() = ContextFieldContributor { fun requestContributor() = ContextFieldContributor {

View File

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

View File

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