From 16328e64c8f4d19001674903a2c29c614cd58925 Mon Sep 17 00:00:00 2001 From: jerrywei <2073825933@qq.com> Date: Wed, 11 Sep 2024 23:35:26 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91SWAGGER:=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dswagger=E6=96=87=E6=A1=A3A=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=BC=95=E7=94=A8B=E5=B1=9E=E6=80=A7=E6=97=B6=20A=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E4=B8=AD=E5=AE=9A=E4=B9=89B=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=B8=8A=E7=9A=84=20@Schema=20=E6=B3=A8=E8=A7=A3=E4=B8=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/YudaoSwaggerAutoConfiguration.java | 5 +- .../SchemaPropertyFixModelConverter.java | 94 +++++++++++++++---- 2 files changed, 80 insertions(+), 19 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java index 5b7456961f..994ce93555 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java @@ -15,6 +15,7 @@ import org.springdoc.core.*; import org.springdoc.core.customizers.OpenApiBuilderCustomizer; import org.springdoc.core.customizers.ServerBaseUrlCustomizer; import org.springdoc.core.providers.JavadocProvider; +import org.springdoc.core.providers.ObjectMapperProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -105,8 +106,8 @@ public class YudaoSwaggerAutoConfiguration { * 修复swagger文档A属性引用B属性时 A属性中定义B字段上的 @Schema 注解不生效问题 */ @Bean - public SchemaPropertyFixModelConverter schemaPropertyFixModelConverter(){ - return new SchemaPropertyFixModelConverter(); + public SchemaPropertyFixModelConverter schemaPropertyFixModelConverter(ObjectMapperProvider springDocObjectMapper){ + return new SchemaPropertyFixModelConverter(springDocObjectMapper); } // ========== 分组 OpenAPI 配置 ========== diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/converter/SchemaPropertyFixModelConverter.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/converter/SchemaPropertyFixModelConverter.java index ea7ba4fa81..18410adb65 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/converter/SchemaPropertyFixModelConverter.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/converter/SchemaPropertyFixModelConverter.java @@ -1,16 +1,22 @@ package cn.iocoder.yudao.framework.swagger.core.converter; import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition; import io.swagger.v3.core.converter.AnnotatedType; import io.swagger.v3.core.converter.ModelConverter; import io.swagger.v3.core.converter.ModelConverterContext; +import io.swagger.v3.core.util.AnnotationsUtils; import io.swagger.v3.core.util.RefUtils; import io.swagger.v3.oas.models.media.Schema; +import org.apache.commons.lang3.StringUtils; +import org.springdoc.core.providers.ObjectMapperProvider; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; -import java.util.Optional; +import java.lang.annotation.Annotation; +import java.util.*; /** *
@@ -24,13 +30,18 @@ import java.util.Optional;
*/
public class SchemaPropertyFixModelConverter implements ModelConverter {
+ /**
+ * The Spring doc object mapper.
+ */
+ private final ObjectMapperProvider springDocObjectMapper;
/**
* Instantiates a new Polymorphic model converter.
*
*/
- public SchemaPropertyFixModelConverter() {
+ public SchemaPropertyFixModelConverter(ObjectMapperProvider springDocObjectMapper) {
+ this.springDocObjectMapper = springDocObjectMapper;
}
@Override
@@ -51,7 +62,7 @@ public class SchemaPropertyFixModelConverter implements ModelConverter {
* @param schemas the schemas
* @return the schema
*/
- @SuppressWarnings("rawtypes")
+ @SuppressWarnings("all")
private Schema supplementarySchema(AnnotatedType type, Schema schema, Collection