From 784a56fd4f85ae170b8a56dd0a64a33a7bff98bc Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 29 Aug 2024 19:42:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E6=8F=90=E5=8D=87=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=87=E6=A1=A3=E5=93=8D=E5=BA=94=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=A9=E5=B1=95=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/ApiDocGlobalResponseHandler.java | 17 ++++++++++++----- .../GlobalResponseAutoConfiguration.java | 7 ++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/ApiDocGlobalResponseHandler.java b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/ApiDocGlobalResponseHandler.java index a5e99c0a..287269c7 100644 --- a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/ApiDocGlobalResponseHandler.java +++ b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/ApiDocGlobalResponseHandler.java @@ -16,6 +16,7 @@ package top.continew.starter.web.autoconfigure.response; +import cn.hutool.core.util.ClassUtil; import org.apache.commons.lang3.reflect.TypeUtils; import org.springdoc.core.parsers.ReturnTypeParser; import org.springframework.core.MethodParameter; @@ -35,7 +36,13 @@ import java.lang.reflect.Type; */ public class ApiDocGlobalResponseHandler implements ReturnTypeParser { - private static final Class R_TYPE = R.class; + private final GlobalResponseProperties globalResponseProperties; + private final Class responseClass; + + public ApiDocGlobalResponseHandler(GlobalResponseProperties globalResponseProperties) { + this.globalResponseProperties = globalResponseProperties; + this.responseClass = ClassUtil.loadClass(globalResponseProperties.getResponseClassFullName()); + } /** * 获取返回类型 @@ -51,15 +58,15 @@ public class ApiDocGlobalResponseHandler implements ReturnTypeParser { if (!DocUtils.hasRestControllerAnnotation(methodParameter.getContainingClass())) { return returnType; } - // 如果为 R 则直接返回 - if (returnType.getTypeName().contains("top.continew.starter.web.model.R")) { + // 如果为响应类型,则直接返回 + if (returnType.getTypeName().contains(globalResponseProperties.getResponseClassFullName())) { return returnType; } // 如果是 void类型,则返回 R if (returnType == void.class || returnType == Void.class) { - return TypeUtils.parameterize(R_TYPE, Void.class); + return TypeUtils.parameterize(responseClass, Void.class); } // 返回 R - return TypeUtils.parameterize(R_TYPE, returnType); + return TypeUtils.parameterize(responseClass, returnType); } } diff --git a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java index e07df074..e78cc0ae 100644 --- a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java +++ b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java @@ -50,6 +50,11 @@ import java.util.Locale; public class GlobalResponseAutoConfiguration { private static final Logger log = LoggerFactory.getLogger(GlobalResponseAutoConfiguration.class); + private final GlobalResponseProperties globalResponseProperties; + + public GlobalResponseAutoConfiguration(GlobalResponseProperties globalResponseProperties) { + this.globalResponseProperties = globalResponseProperties; + } /** * 全局异常处理 @@ -151,7 +156,7 @@ public class GlobalResponseAutoConfiguration { @Bean @ConditionalOnMissingBean public ApiDocGlobalResponseHandler apiDocGlobalResponseHandler() { - return new ApiDocGlobalResponseHandler(); + return new ApiDocGlobalResponseHandler(globalResponseProperties); } @PostConstruct