diff --git a/README.md b/README.md index 65d04acd92bdd55807fe9eed6f2a8e98f2c573c9..7471f845ce22bb36f7077796338c38080d95491b 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ 本系统采用Spring Cloud 微服务架构,一款高性、高吞吐量、高扩展性的物联网平台! 单机可以支持百万链接,同时支持自定义扩展功能多种协议交互,支持插件化开发! +[![OSCS Status](https://www.oscs1024.com/platform/badge/mqttsnet/thinglinks.svg?size=small)](https://www.oscs1024.com/project/mqttsnet/thinglinks?ref=badge_small) + ## 技术栈 1、采用前后端分离的模式,前端框架VUE。 diff --git a/doc/nacos-config/DEFAULT_GROUP/application-dev.yml b/doc/nacos-config/DEFAULT_GROUP/application-dev.yml index f4f0a9c90b132ffec73f92b2608e7bbca2d92d9d..8666860bef398973695bd2a3b1efb97e55f9df15 100644 --- a/doc/nacos-config/DEFAULT_GROUP/application-dev.yml +++ b/doc/nacos-config/DEFAULT_GROUP/application-dev.yml @@ -4,6 +4,9 @@ spring: allow-bean-definition-overriding: true autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + mvc: + pathmatch: + matching-strategy: ant_path_matcher #请求处理的超时时间 ribbon: diff --git a/thinglinks-common/thinglinks-common-swagger/src/main/java/com/mqttsnet/thinglinks/common/swagger/config/SwaggerAutoConfiguration.java b/thinglinks-common/thinglinks-common-swagger/src/main/java/com/mqttsnet/thinglinks/common/swagger/config/SwaggerAutoConfiguration.java index 286ecad12e5d7dfb93f0fe37372bbfc5baf84564..342bfd7512645bd2268fc154e5ac194713854bea 100644 --- a/thinglinks-common/thinglinks-common-swagger/src/main/java/com/mqttsnet/thinglinks/common/swagger/config/SwaggerAutoConfiguration.java +++ b/thinglinks-common/thinglinks-common-swagger/src/main/java/com/mqttsnet/thinglinks/common/swagger/config/SwaggerAutoConfiguration.java @@ -1,14 +1,20 @@ package com.mqttsnet.thinglinks.common.swagger.config; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Predicate; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; 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 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; @@ -22,6 +28,8 @@ 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.spring.web.plugins.WebFluxRequestHandlerProvider; +import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @@ -126,4 +134,26 @@ public class SwaggerAutoConfiguration .version(swaggerProperties.getVersion()) .build(); } + @Bean + public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { + return new BeanPostProcessor() { + @Override + @SuppressWarnings({"NullableProblems", "unchecked"}) + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { + try { + Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); + if (null != field) { + field.setAccessible(true); + List mappings = (List) field.get(bean); + mappings.removeIf(e -> null != e.getPatternParser()); + } + } catch (IllegalArgumentException | IllegalAccessException e) { + throw new IllegalStateException(e); + } + } + return bean; + } + }; + } }