From b4b23596a555b41bc5d3ada0d6a6c6883ebed2e8 Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 16 Jan 2023 14:22:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=20knife4j=204.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-dependencies/pom.xml | 4 +-- .../yudao-spring-boot-starter-web/pom.xml | 9 +++++- .../config/YudaoSwaggerAutoConfiguration.java | 29 ++++++++++++------- ...ngFoxHandlerProviderBeanPostProcessor.java | 3 +- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 8255a86b8..3500c8341 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -18,7 +18,7 @@ 2.7.7 - 3.0.3 + 4.0.0 1.6.8 2.5 @@ -166,7 +166,7 @@ com.github.xiaoymin - knife4j-spring-boot-starter + knife4j-openapi2-spring-boot-starter ${knife4j.version} diff --git a/yudao-framework/yudao-spring-boot-starter-web/pom.xml b/yudao-framework/yudao-spring-boot-starter-web/pom.xml index 7d277790c..05971ca16 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-web/pom.xml @@ -21,6 +21,12 @@ yudao-common + + org.apache.commons + commons-lang3 + provided + + org.springframework.boot @@ -35,7 +41,7 @@ com.github.xiaoymin - knife4j-spring-boot-starter + knife4j-openapi2-spring-boot-starter io.swagger @@ -72,6 +78,7 @@ org.jsoup jsoup + 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 240f0f284..5ccbc06c4 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 @@ -9,15 +9,16 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.http.HttpHeaders; import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ExampleBuilder; +import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestParameterBuilder; +import springfox.documentation.schema.ModelRef; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -30,7 +31,7 @@ import static springfox.documentation.builders.RequestHandlerSelectors.basePacka * @author 芋道源码 */ @AutoConfiguration -@EnableSwagger2 +@EnableSwagger2WebMvc @EnableKnife4j @ConditionalOnClass({Docket.class, ApiInfoBuilder.class}) // 允许使用 swagger.enable=false 禁用 Swagger @@ -59,7 +60,7 @@ public class YudaoSwaggerAutoConfiguration { .securitySchemes(securitySchemes()) .securityContexts(securityContexts()) // ④ 全局参数(多租户 header) - .globalRequestParameters(globalRequestParameters()); + .globalOperationParameters(globalRequestParameters()); } // ========== apiInfo ========== @@ -95,7 +96,7 @@ public class YudaoSwaggerAutoConfiguration { return Collections.singletonList(SecurityContext.builder() .securityReferences(securityReferences()) // 通过 PathSelectors.regex("^(?!auth).*$"),排除包含 "auth" 的接口不需要使用securitySchemes - .operationSelector(o -> o.requestMappingPattern().matches("^(?!auth).*$")) + .forPaths(PathSelectors.regex("^(?!auth).*$")) .build()); } @@ -109,11 +110,17 @@ public class YudaoSwaggerAutoConfiguration { // ========== globalRequestParameters ========== - private static List globalRequestParameters() { - RequestParameterBuilder tenantParameter = new RequestParameterBuilder() - .name(HEADER_TENANT_ID).description("租户编号") - .in(ParameterType.HEADER).example(new ExampleBuilder().value(1L).build()); - return Collections.singletonList(tenantParameter.build()); + private static List globalRequestParameters() { + List tenantParameter = new ArrayList<>(); + tenantParameter.add(new ParameterBuilder() + .name(HEADER_TENANT_ID) + .description("租户编号") + .modelRef(new ModelRef("long")) + .defaultValue("1") + .parameterType("header") + .required(true) + .build()); + return tenantParameter; } } diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/SpringFoxHandlerProviderBeanPostProcessor.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/SpringFoxHandlerProviderBeanPostProcessor.java index c9d178ac8..e43e2f0f8 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/SpringFoxHandlerProviderBeanPostProcessor.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/core/SpringFoxHandlerProviderBeanPostProcessor.java @@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; -import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider; import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; import java.util.List; @@ -20,7 +19,7 @@ public class SpringFoxHandlerProviderBeanPostProcessor implements BeanPostProces @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { + if (bean instanceof WebMvcRequestHandlerProvider) { customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); } return bean;