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));
+ }
+
}