From 1eeed86b6549bee4f09ea90de00ff0e0056f5fd9 Mon Sep 17 00:00:00 2001
From: Gelis <806938079@qq.com>
Date: Fri, 24 Feb 2023 16:56:26 +0800
Subject: [PATCH] 修复注释 @EnableCustomSwagger2 后,项目启动失败
---
ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java | 38 ++++++++++++++++----------------------
1 files changed, 16 insertions(+), 22 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
index 1a9597d..4badbef 100644
--- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
+++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
@@ -3,13 +3,12 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.function.Predicate;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
@@ -18,15 +17,18 @@
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.Contact;
import springfox.documentation.service.SecurityReference;
+import springfox.documentation.service.SecurityScheme;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
-@EnableAutoConfiguration
+@EnableConfigurationProperties(SwaggerProperties.class)
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
+@Import({SwaggerBeanPostProcessor.class, SwaggerWebConfiguration.class})
public class SwaggerAutoConfiguration
{
/**
@@ -35,13 +37,6 @@
private static final List<String> DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**");
private static final String BASE_PATH = "/**";
-
- @Bean
- @ConditionalOnMissingBean
- public SwaggerProperties swaggerProperties()
- {
- return new SwaggerProperties();
- }
@Bean
public Docket api(SwaggerProperties swaggerProperties)
@@ -60,27 +55,26 @@
{
swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
}
+
List<Predicate<String>> excludePath = new ArrayList<>();
swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
- //noinspection Guava
- return new Docket(DocumentationType.SWAGGER_2)
- .host(swaggerProperties.getHost())
+ ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
.apiInfo(apiInfo(swaggerProperties)).select()
- .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
- .paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath)))
- .build()
- .securitySchemes(securitySchemes())
- .securityContexts(securityContexts())
- .pathMapping("/");
+ .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()));
+
+ swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p)));
+ swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate()));
+
+ return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");
}
/**
* 安全模式,这里指定token通过Authorization头请求头传递
*/
- private List<ApiKey> securitySchemes()
+ private List<SecurityScheme> securitySchemes()
{
- List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
+ List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
return apiKeyList;
}
@@ -94,7 +88,7 @@
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$"))
+ .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
.build());
return securityContexts;
}
--
Gitblit v1.9.3