diff --git a/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/java/com/gewuyou/forgeboot/webmvc/version/config/entities/VersionProperties.java b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/java/com/gewuyou/forgeboot/webmvc/version/config/entities/VersionProperties.java new file mode 100644 index 0000000..34dac53 --- /dev/null +++ b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/java/com/gewuyou/forgeboot/webmvc/version/config/entities/VersionProperties.java @@ -0,0 +1,30 @@ +package com.gewuyou.forgeboot.webmvc.version.config.entities; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 版本属性 + *
+ * 该类用于配置和管理版本相关的属性,通过@ConfigurationProperties注解 + * 将其与配置文件中以 version 为前缀的属性自动绑定 + * + * @author gewuyou + * @since 2025-05-02 11:52:24 + */ +@ConfigurationProperties(prefix = "version") +public class VersionProperties { + /** + * API前缀 + *
+ * 定义了API的路由前缀,用于在URL中区分不同的API版本 + */ + private String apiPrefix = "/api"; + + public String getApiPrefix() { + return apiPrefix; + } + + public void setApiPrefix(String apiPrefix) { + this.apiPrefix = apiPrefix; + } +} diff --git a/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/config/VersionAutoConfiguration.kt b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/config/VersionAutoConfiguration.kt index 55246f3..a2b5972 100644 --- a/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/config/VersionAutoConfiguration.kt +++ b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/config/VersionAutoConfiguration.kt @@ -1,7 +1,9 @@ package com.gewuyou.forgeboot.webmvc.version.config import com.gewuyou.forgeboot.core.extension.log +import com.gewuyou.forgeboot.webmvc.version.config.entities.VersionProperties import com.gewuyou.forgeboot.webmvc.version.mapping.ApiVersionRequestMappingHandlerMapping +import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @@ -12,6 +14,7 @@ import org.springframework.context.annotation.Configuration * @author gewuyou */ @Configuration +@EnableConfigurationProperties(VersionProperties::class) open class VersionAutoConfiguration { /** * 创建并配置一个 ApiVersionRequestMappingHandlerMapping 实例 @@ -23,8 +26,8 @@ open class VersionAutoConfiguration { * @return ApiVersionRequestMappingHandlerMapping 实例,用于处理基于 API 版本的请求映射 */ @Bean - open fun apiVersionRequestMappingHandlerMapping(): ApiVersionRequestMappingHandlerMapping { + open fun apiVersionRequestMappingHandlerMapping(versionProperties: VersionProperties): ApiVersionRequestMappingHandlerMapping { log.info("创建 API 版本请求映射处理程序映射") - return ApiVersionRequestMappingHandlerMapping() + return ApiVersionRequestMappingHandlerMapping(versionProperties) } } \ No newline at end of file diff --git a/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/mapping/ApiVersionRequestMappingHandlerMapping.kt b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/mapping/ApiVersionRequestMappingHandlerMapping.kt index 043b2c0..48c25ea 100644 --- a/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/mapping/ApiVersionRequestMappingHandlerMapping.kt +++ b/forgeboot-webmvc/forgeboot-webmvc-version-starter/src/main/kotlin/com/gewuyou/forgeboot/webmvc/version/mapping/ApiVersionRequestMappingHandlerMapping.kt @@ -2,6 +2,7 @@ package com.gewuyou.forgeboot.webmvc.version.mapping import com.gewuyou.forgeboot.webmvc.version.annotation.ApiVersion +import com.gewuyou.forgeboot.webmvc.version.config.entities.VersionProperties import org.springframework.core.annotation.AnnotatedElementUtils import org.springframework.web.bind.annotation.RestController import org.springframework.web.servlet.mvc.method.RequestMappingInfo @@ -14,7 +15,9 @@ import java.lang.reflect.Method * @since 2025-02-04 20:30:44 * @author gewuyou */ -class ApiVersionRequestMappingHandlerMapping : RequestMappingHandlerMapping() { +class ApiVersionRequestMappingHandlerMapping( + private val versionProperties: VersionProperties +) : RequestMappingHandlerMapping() { /** * 判断是否处理特定类型的Bean * 仅处理标注了 @RestController 注解的类 @@ -66,7 +69,7 @@ class ApiVersionRequestMappingHandlerMapping : RequestMappingHandlerMapping() { .map { // 加上版本前缀 RequestMappingInfo - .paths("/api/$it") + .paths("${versionProperties.apiPrefix}/$it") .build() }.reduce { // 组合