兼容springdoc2.8

This commit is contained in:
jmxd
2025-05-31 08:32:39 +08:00
parent a7b3e189f7
commit 9106fcfbcb
2 changed files with 37 additions and 4 deletions

View File

@@ -13,7 +13,7 @@
<name>magic-api-plugin-springdoc</name>
<description>magic-api-plugin-springdoc</description>
<properties>
<springdoc.version>2.0.4</springdoc.version>
<springdoc.version>2.8.8</springdoc.version>
</properties>
<dependencies>
<dependency>

View File

@@ -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<AbstractSwaggerUiConfigProperties.SwaggerUrl> 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