From 9106fcfbcb6ec92ddf47f5a62672a8a8fdf5e53e Mon Sep 17 00:00:00 2001 From: jmxd <838425805@qq.com> Date: Sat, 31 May 2025 08:32:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9springdoc2.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../magic-api-plugin-springdoc/pom.xml | 2 +- .../MagicSpringDocConfiguration.java | 39 +++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/magic-api-plugins/magic-api-plugin-springdoc/pom.xml b/magic-api-plugins/magic-api-plugin-springdoc/pom.xml index 1b860998..ef2f60ee 100644 --- a/magic-api-plugins/magic-api-plugin-springdoc/pom.xml +++ b/magic-api-plugins/magic-api-plugin-springdoc/pom.xml @@ -13,7 +13,7 @@ magic-api-plugin-springdoc magic-api-plugin-springdoc - 2.0.4 + 2.8.8 diff --git a/magic-api-plugins/magic-api-plugin-springdoc/src/main/java/org/ssssssss/magicapi/springdoc/MagicSpringDocConfiguration.java b/magic-api-plugins/magic-api-plugin-springdoc/src/main/java/org/ssssssss/magicapi/springdoc/MagicSpringDocConfiguration.java index f370a02a..cac5d09f 100644 --- a/magic-api-plugins/magic-api-plugin-springdoc/src/main/java/org/ssssssss/magicapi/springdoc/MagicSpringDocConfiguration.java +++ b/magic-api-plugins/magic-api-plugin-springdoc/src/main/java/org/ssssssss/magicapi/springdoc/MagicSpringDocConfiguration.java @@ -1,11 +1,15 @@ package org.ssssssss.magicapi.springdoc; +import jakarta.servlet.ServletContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springdoc.core.properties.AbstractSwaggerUiConfigProperties; +import org.springdoc.core.properties.SpringDocConfigProperties; import org.springdoc.core.properties.SwaggerUiConfigParameters; import org.springdoc.core.properties.SwaggerUiConfigProperties; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -23,9 +27,10 @@ import org.ssssssss.magicapi.springdoc.entity.SwaggerEntity; import org.ssssssss.magicapi.springdoc.entity.SwaggerProvider; import org.ssssssss.magicapi.utils.Mapping; -import jakarta.servlet.ServletContext; - -import java.util.*; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; @Configuration @EnableConfigurationProperties(SpringDocConfig.class) @@ -62,6 +67,34 @@ public class MagicSpringDocConfiguration implements MagicPluginConfiguration { return new Plugin("SpringDoc"); } + @Bean + @Primary + @ConditionalOnMissingBean(SwaggerUiConfigParameters.class) + public SwaggerUiConfigProperties magicSwaggerUiConfigProperties(SwaggerUiConfigProperties swaggerUiConfigProperties, SpringDocConfigProperties springDocConfigProperties){ + Set urls = swaggerUiConfigProperties.getUrls(); + if (urls == null){ + urls = new HashSet<>(); + AbstractSwaggerUiConfigProperties.SwaggerUrl url = new AbstractSwaggerUiConfigProperties.SwaggerUrl("default", springDocConfigProperties.getApiDocs().getPath(), null); + urls.add(url); + } + urls.add(new AbstractSwaggerUiConfigProperties.SwaggerUrl(springDocConfig.getGroupName(), servletContext.getContextPath() + springDocConfig.getLocation(), null){ + @Override + public String getUrl() { + try { + if (!createdMapping){ + createdMapping = true; + createSwaggerProvider(requestMagicDynamicRegistryObjectProvider, magicResourceService, servletContext); + } + } catch (Exception e) { + logger.error("注册springdoc接口失败", e); + } + return super.getUrl(); + } + }); + swaggerUiConfigProperties.setUrls(urls); + return swaggerUiConfigProperties; + } + @Bean @Primary @Lazy