From 46ed58a65b6717bcded4d11fa6e0d0f13f703844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LI-CCONG=5C=E6=9D=8E=E8=81=AA=E8=81=AA?= <1441652193@qq.com> Date: Thu, 21 Mar 2024 15:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=9B=91=E6=8E=A7=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=95=B4=E5=90=88v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nxhs-service/pom.xml | 5 ++ .../main/java/cc/yunxi/NxhsApplication.java | 8 +++ .../java/cc/yunxi/config/WebMvcConfig.java | 61 +++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/nxhs-service/pom.xml b/nxhs-service/pom.xml index 5642d0c..fe97c61 100644 --- a/nxhs-service/pom.xml +++ b/nxhs-service/pom.xml @@ -43,6 +43,11 @@ org.springframework.boot spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-actuator + diff --git a/nxhs-service/src/main/java/cc/yunxi/NxhsApplication.java b/nxhs-service/src/main/java/cc/yunxi/NxhsApplication.java index 1c6102a..aa7a8ee 100644 --- a/nxhs-service/src/main/java/cc/yunxi/NxhsApplication.java +++ b/nxhs-service/src/main/java/cc/yunxi/NxhsApplication.java @@ -5,10 +5,18 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; +import javax.annotation.PreDestroy; + @SpringBootApplication @ServletComponentScan(basePackages = "cc.yunxi.filter") public class NxhsApplication { public static void main(String[] args) { SpringApplication.run(NxhsApplication.class, args); } + + + @PreDestroy + public void PreDestroy(){ + System.out.println("应用程序正在关闭..."); + } } diff --git a/nxhs-service/src/main/java/cc/yunxi/config/WebMvcConfig.java b/nxhs-service/src/main/java/cc/yunxi/config/WebMvcConfig.java index 429199c..aaefa3c 100644 --- a/nxhs-service/src/main/java/cc/yunxi/config/WebMvcConfig.java +++ b/nxhs-service/src/main/java/cc/yunxi/config/WebMvcConfig.java @@ -7,15 +7,28 @@ import cc.yunxi.interceptor.StatsInterceptor; import cn.hutool.core.collection.CollUtil; import lombok.Getter; 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.web.servlet.ServletComponentScan; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; import org.springframework.format.FormatterRegistry; import org.springframework.util.AntPathMatcher; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.config.annotation.*; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; @Configuration @@ -156,4 +169,52 @@ public class WebMvcConfig implements WebMvcConfigurer { .addPathPatterns("/**") .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> allEndpoints = new ArrayList<>(); + Collection 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)); + } + }