From 2f7b30b1dff0b1a9f1acbd1f7a4073975ee92744 Mon Sep 17 00:00:00 2001 From: macro Date: Sat, 25 Jun 2022 15:40:33 +0800 Subject: [PATCH] =?UTF-8?q?Swagger=E6=94=B9=E7=94=A8Starter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/macro/mall/config/SwaggerConfig.java | 8 ++++ mall-admin/src/main/resources/application.yml | 17 +++---- .../mall/common/config/BaseSwaggerConfig.java | 44 ++++++++++++++++++- .../macro/mall/demo/config/SwaggerConfig.java | 7 +++ mall-demo/src/main/resources/application.yml | 6 ++- .../mall/portal/config/SwaggerConfig.java | 7 +++ .../src/main/resources/application.yml | 11 +++-- .../mall/search/config/SwaggerConfig.java | 7 +++ .../src/main/resources/application.yml | 3 ++ 9 files changed, 93 insertions(+), 17 deletions(-) diff --git a/mall-admin/src/main/java/com/macro/mall/config/SwaggerConfig.java b/mall-admin/src/main/java/com/macro/mall/config/SwaggerConfig.java index 5b5d324..95ae3a9 100644 --- a/mall-admin/src/main/java/com/macro/mall/config/SwaggerConfig.java +++ b/mall-admin/src/main/java/com/macro/mall/config/SwaggerConfig.java @@ -2,6 +2,8 @@ package com.macro.mall.config; import com.macro.mall.common.config.BaseSwaggerConfig; import com.macro.mall.common.domain.SwaggerProperties; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -24,4 +26,10 @@ public class SwaggerConfig extends BaseSwaggerConfig { .enableSecurity(true) .build(); } + + @Bean + public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return generateBeanPostProcessor(); + } + } diff --git a/mall-admin/src/main/resources/application.yml b/mall-admin/src/main/resources/application.yml index 1499091..43b78b8 100644 --- a/mall-admin/src/main/resources/application.yml +++ b/mall-admin/src/main/resources/application.yml @@ -7,6 +7,9 @@ spring: multipart: enabled: true #开启文件上传 max-file-size: 10MB #限制文件上传大小为10M + mvc: + pathmatch: + matching-strategy: ant_path_matcher mybatis: mapper-locations: @@ -30,15 +33,15 @@ redis: secure: ignored: urls: #安全路径白名单 - - /swagger-ui.html + - /swagger-ui/ - /swagger-resources/** - - /swagger/** - /**/v2/api-docs + - /**/*.html - /**/*.js - /**/*.css - /**/*.png - - /**/*.ico - - /webjars/springfox-swagger-ui/** + - /**/*.map + - /favicon.ico - /actuator/** - /druid/** - /admin/login @@ -59,9 +62,3 @@ aliyun: callback: http://39.98.190.128:8080/aliyun/oss/callback # 文件上传成功后的回调地址 dir: prefix: mall/images/ # 上传文件夹路径前缀 - -minio: - endpoint: http://192.168.3.101:9090 #MinIO服务所在地址 - bucketName: mall #存储桶名称 - accessKey: minioadmin #访问的key - secretKey: minioadmin #访问的秘钥 diff --git a/mall-common/src/main/java/com/macro/mall/common/config/BaseSwaggerConfig.java b/mall-common/src/main/java/com/macro/mall/common/config/BaseSwaggerConfig.java index 011af3e..664b92d 100644 --- a/mall-common/src/main/java/com/macro/mall/common/config/BaseSwaggerConfig.java +++ b/mall-common/src/main/java/com/macro/mall/common/config/BaseSwaggerConfig.java @@ -1,7 +1,11 @@ package com.macro.mall.common.config; import com.macro.mall.common.domain.SwaggerProperties; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; +import org.springframework.util.ReflectionUtils; +import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; @@ -9,9 +13,13 @@ 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.spring.web.plugins.WebFluxRequestHandlerProvider; +import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Swagger基础配置 @@ -43,9 +51,9 @@ public abstract class BaseSwaggerConfig { .build(); } - private List securitySchemes() { + private List securitySchemes() { //设置请求头信息 - List result = new ArrayList<>(); + List result = new ArrayList<>(); ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header"); result.add(apiKey); return result; @@ -74,6 +82,38 @@ public abstract class BaseSwaggerConfig { return result; } + public BeanPostProcessor generateBeanPostProcessor(){ + return new BeanPostProcessor() { + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { + customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); + } + return bean; + } + + private void customizeSpringfoxHandlerMappings(List mappings) { + List copy = mappings.stream() + .filter(mapping -> mapping.getPatternParser() == null) + .collect(Collectors.toList()); + mappings.clear(); + mappings.addAll(copy); + } + + @SuppressWarnings("unchecked") + private List getHandlerMappings(Object bean) { + try { + Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); + field.setAccessible(true); + return (List) field.get(bean); + } catch (IllegalArgumentException | IllegalAccessException e) { + throw new IllegalStateException(e); + } + } + }; + } + /** * 自定义Swagger配置 */ diff --git a/mall-demo/src/main/java/com/macro/mall/demo/config/SwaggerConfig.java b/mall-demo/src/main/java/com/macro/mall/demo/config/SwaggerConfig.java index 4bfeb96..e6dc393 100644 --- a/mall-demo/src/main/java/com/macro/mall/demo/config/SwaggerConfig.java +++ b/mall-demo/src/main/java/com/macro/mall/demo/config/SwaggerConfig.java @@ -2,6 +2,8 @@ package com.macro.mall.demo.config; import com.macro.mall.common.config.BaseSwaggerConfig; import com.macro.mall.common.domain.SwaggerProperties; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -25,4 +27,9 @@ public class SwaggerConfig extends BaseSwaggerConfig { .build(); } + @Bean + public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return generateBeanPostProcessor(); + } + } diff --git a/mall-demo/src/main/resources/application.yml b/mall-demo/src/main/resources/application.yml index 392785a..032750c 100644 --- a/mall-demo/src/main/resources/application.yml +++ b/mall-demo/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: application: name: mall-demo datasource: - url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: root thymeleaf: @@ -14,6 +14,10 @@ spring: servlet: content-type: text/html cache: false #开发时关闭缓存,不然没法看到实时页面 + mvc: + pathmatch: + matching-strategy: ant_path_matcher + mybatis: mapper-locations: - classpath:mapper/*.xml diff --git a/mall-portal/src/main/java/com/macro/mall/portal/config/SwaggerConfig.java b/mall-portal/src/main/java/com/macro/mall/portal/config/SwaggerConfig.java index c71b2a8..d14e6bf 100644 --- a/mall-portal/src/main/java/com/macro/mall/portal/config/SwaggerConfig.java +++ b/mall-portal/src/main/java/com/macro/mall/portal/config/SwaggerConfig.java @@ -2,6 +2,8 @@ package com.macro.mall.portal.config; import com.macro.mall.common.config.BaseSwaggerConfig; import com.macro.mall.common.domain.SwaggerProperties; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -24,4 +26,9 @@ public class SwaggerConfig extends BaseSwaggerConfig { .enableSecurity(true) .build(); } + + @Bean + public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return generateBeanPostProcessor(); + } } diff --git a/mall-portal/src/main/resources/application.yml b/mall-portal/src/main/resources/application.yml index d2101ed..e9c3e4b 100644 --- a/mall-portal/src/main/resources/application.yml +++ b/mall-portal/src/main/resources/application.yml @@ -3,6 +3,9 @@ spring: name: mall-portal profiles: active: dev #默认为开发环境 + mvc: + pathmatch: + matching-strategy: ant_path_matcher mybatis: mapper-locations: @@ -18,15 +21,15 @@ jwt: secure: ignored: urls: #安全路径白名单 - - /swagger-ui.html + - /swagger-ui/ - /swagger-resources/** - - /swagger/** - /**/v2/api-docs + - /**/*.html - /**/*.js - /**/*.css - /**/*.png - - /**/*.ico - - /webjars/springfox-swagger-ui/** + - /**/*.map + - /favicon.ico - /druid/** - /actuator/** - /sso/** diff --git a/mall-search/src/main/java/com/macro/mall/search/config/SwaggerConfig.java b/mall-search/src/main/java/com/macro/mall/search/config/SwaggerConfig.java index d7b1352..23edcd3 100644 --- a/mall-search/src/main/java/com/macro/mall/search/config/SwaggerConfig.java +++ b/mall-search/src/main/java/com/macro/mall/search/config/SwaggerConfig.java @@ -2,6 +2,8 @@ package com.macro.mall.search.config; import com.macro.mall.common.config.BaseSwaggerConfig; import com.macro.mall.common.domain.SwaggerProperties; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -24,4 +26,9 @@ public class SwaggerConfig extends BaseSwaggerConfig { .enableSecurity(false) .build(); } + + @Bean + public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return generateBeanPostProcessor(); + } } diff --git a/mall-search/src/main/resources/application.yml b/mall-search/src/main/resources/application.yml index 3e55585..5c6b737 100644 --- a/mall-search/src/main/resources/application.yml +++ b/mall-search/src/main/resources/application.yml @@ -3,6 +3,9 @@ spring: name: mall-search profiles: active: dev #默认为开发环境 + mvc: + pathmatch: + matching-strategy: ant_path_matcher server: port: 8081