|
|
@ -7,15 +7,28 @@ import cc.yunxi.interceptor.StatsInterceptor;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import lombok.Getter;
|
|
|
|
import lombok.Getter;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.web.*;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
|
|
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
|
|
import org.springframework.boot.web.servlet.ServletComponentScan;
|
|
|
|
import org.springframework.boot.web.servlet.ServletComponentScan;
|
|
|
|
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
import org.springframework.format.FormatterRegistry;
|
|
|
|
import org.springframework.format.FormatterRegistry;
|
|
|
|
import org.springframework.util.AntPathMatcher;
|
|
|
|
import org.springframework.util.AntPathMatcher;
|
|
|
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import org.springframework.web.servlet.config.annotation.*;
|
|
|
|
import org.springframework.web.servlet.config.annotation.*;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
@Configuration
|
|
|
|
@Configuration
|
|
|
@ -156,4 +169,52 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
|
|
|
.addPathPatterns("/**")
|
|
|
|
.addPathPatterns("/**")
|
|
|
|
.excludePathPatterns(globalExcludePaths);
|
|
|
|
.excludePathPatterns(globalExcludePaths);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 解决springboot升级到2.6.x之后,knife4j报错
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param webEndpointsSupplier the web endpoints supplier
|
|
|
|
|
|
|
|
* @param servletEndpointsSupplier the servlet endpoints supplier
|
|
|
|
|
|
|
|
* @param controllerEndpointsSupplier the controller endpoints supplier
|
|
|
|
|
|
|
|
* @param endpointMediaTypes the endpoint media types
|
|
|
|
|
|
|
|
* @param corsProperties the cors properties
|
|
|
|
|
|
|
|
* @param webEndpointProperties the web endpoint properties
|
|
|
|
|
|
|
|
* @param environment the environment
|
|
|
|
|
|
|
|
* @return the web mvc endpoint handler mapping
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
|
|
|
|
public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(
|
|
|
|
|
|
|
|
WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier,
|
|
|
|
|
|
|
|
ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes,
|
|
|
|
|
|
|
|
CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties,
|
|
|
|
|
|
|
|
Environment environment) {
|
|
|
|
|
|
|
|
List<ExposableEndpoint<?>> allEndpoints = new ArrayList<>();
|
|
|
|
|
|
|
|
Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
|
|
|
|
|
|
|
|
allEndpoints.addAll(webEndpoints);
|
|
|
|
|
|
|
|
allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
|
|
|
|
|
|
|
|
allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
|
|
|
|
|
|
|
|
String basePath = webEndpointProperties.getBasePath();
|
|
|
|
|
|
|
|
EndpointMapping endpointMapping = new EndpointMapping(basePath);
|
|
|
|
|
|
|
|
boolean shouldRegisterLinksMapping = shouldRegisterLinksMapping(webEndpointProperties,
|
|
|
|
|
|
|
|
environment, basePath);
|
|
|
|
|
|
|
|
return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes,
|
|
|
|
|
|
|
|
corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath),
|
|
|
|
|
|
|
|
shouldRegisterLinksMapping, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* shouldRegisterLinksMapping
|
|
|
|
|
|
|
|
* @param webEndpointProperties webEndpointProperties
|
|
|
|
|
|
|
|
* @param environment environment
|
|
|
|
|
|
|
|
* @param basePath /
|
|
|
|
|
|
|
|
* @return boolean
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties,
|
|
|
|
|
|
|
|
Environment environment, String basePath) {
|
|
|
|
|
|
|
|
return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath)
|
|
|
|
|
|
|
|
|| ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|