feat(version): Cross-domain configuration is supported for API version request mappings

- Inject VersionProperties and CorsConfigurationSource in VersionAutoConfiguration
- Updated the apiVersionRequestMappingHandlerMapping method to add support for cross-origin configuration
- Remove unnecessary comments from R classes
This commit is contained in:
gewuyou 2025-05-09 17:40:47 +08:00
parent 9cdc962d9a
commit 0920a83e1c
2 changed files with 13 additions and 5 deletions

View File

@ -18,7 +18,7 @@ data class R<T>(
val message: String,
val data: T? = null,
val requestId: String? = null,
val extra: Map<String, Any?> = emptyMap() // ✅ 扩展字段保存位置
val extra: Map<String, Any?> = emptyMap()
) {
/**
* 转换为可变 Map包含 extra 中的字段
@ -33,7 +33,7 @@ data class R<T>(
if (!requestId.isNullOrBlank()) {
map["requestId"] = requestId
}
map.putAll(extra) // ✅ 扁平化合并
map.putAll(extra)
return map
}

View File

@ -6,6 +6,8 @@ import com.gewuyou.forgeboot.webmvc.version.mapping.ApiVersionRequestMappingHand
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.cors.CorsConfigurationSource
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
/**
*版本自动配置
@ -15,7 +17,10 @@ import org.springframework.context.annotation.Configuration
*/
@Configuration
@EnableConfigurationProperties(VersionProperties::class)
open class VersionAutoConfiguration {
open class VersionAutoConfiguration(
private val versionProperties: VersionProperties,
private val corsConfigurationSource: CorsConfigurationSource
) : WebMvcConfigurer {
/**
* 创建并配置一个 ApiVersionRequestMappingHandlerMapping 实例
*
@ -26,8 +31,11 @@ open class VersionAutoConfiguration {
* @return ApiVersionRequestMappingHandlerMapping 实例用于处理基于 API 版本的请求映射
*/
@Bean
open fun apiVersionRequestMappingHandlerMapping(versionProperties: VersionProperties): ApiVersionRequestMappingHandlerMapping {
open fun apiVersionRequestMappingHandlerMapping(): ApiVersionRequestMappingHandlerMapping {
log.info("创建 API 版本请求映射处理程序映射")
return ApiVersionRequestMappingHandlerMapping(versionProperties).also { it.order = Int.MIN_VALUE }
return ApiVersionRequestMappingHandlerMapping(versionProperties).also {
it.order = Int.MIN_VALUE
it.corsConfigurationSource = corsConfigurationSource
}
}
}