Просмотр исходного кода

修改starter-api,将actuator默认设置写入ApiAutoConfiguration中,无需应用单独配置

Signed-off-by: luoshi <luoshi@qmth.com.cn>
luoshi 2 лет назад
Родитель
Сommit
4d7e8badc4

+ 20 - 0
starter-api/src/main/java/com/qmth/boot/api/config/ActuatorProperties.java

@@ -0,0 +1,20 @@
+package com.qmth.boot.api.config;
+
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+
+@Validated
+public class ActuatorProperties {
+
+    @NotNull
+    private String[] endpoint = new String[] { "info", "health", "metrics", "prometheus" };
+
+    public String[] getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String[] endpoint) {
+        this.endpoint = endpoint;
+    }
+}

+ 12 - 0
starter-api/src/main/java/com/qmth/boot/api/config/ApiAutoConfiguration.java

@@ -1,10 +1,22 @@
 package com.qmth.boot.api.config;
 
+import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
+import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties;
+import org.springframework.boot.actuate.autoconfigure.health.HealthProperties;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+import java.util.Arrays;
+import java.util.HashSet;
+
 @Configuration
 @ComponentScan("com.qmth.boot.api")
 public class ApiAutoConfiguration {
 
+    public ApiAutoConfiguration(WebEndpointProperties webEndpointProperties,
+            HealthEndpointProperties healthEndpointProperties, ApiProperties apiProperties) {
+        webEndpointProperties.getExposure()
+                .setInclude(new HashSet<>(Arrays.asList(apiProperties.getActuator().getEndpoint())));
+        healthEndpointProperties.setShowDetails(HealthProperties.Show.ALWAYS);
+    }
 }

+ 12 - 0
starter-api/src/main/java/com/qmth/boot/api/config/ApiProperties.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.validation.annotation.Validated;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 @Component
 @ConfigurationProperties(prefix = ApiConstant.CONFIG_PREFIX)
@@ -27,6 +28,9 @@ public class ApiProperties implements ApiConstant {
 
     private boolean httpTrace = false;
 
+    @NotNull
+    private ActuatorProperties actuator = new ActuatorProperties();
+
     public String getUriPrefix() {
         return uriPrefix;
     }
@@ -74,4 +78,12 @@ public class ApiProperties implements ApiConstant {
     public void setHttpTrace(boolean httpTrace) {
         this.httpTrace = httpTrace;
     }
+
+    public ActuatorProperties getActuator() {
+        return actuator;
+    }
+
+    public void setActuator(ActuatorProperties actuator) {
+        this.actuator = actuator;
+    }
 }

+ 4 - 2
starter-api/src/main/java/com/qmth/boot/api/utils/HttpTraceUtil.java

@@ -2,7 +2,6 @@ package com.qmth.boot.api.utils;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.qmth.boot.api.config.ApiProperties;
-import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.security.model.AccessEntity;
 import org.apache.commons.lang3.ArrayUtils;
 import org.aspectj.lang.reflect.MethodSignature;
@@ -25,12 +24,15 @@ public class HttpTraceUtil {
 
     private boolean enable;
 
+    private String prefix;
+
     public HttpTraceUtil(ApiProperties apiProperties) {
         this.enable = apiProperties.isHttpTrace();
+        this.prefix = apiProperties.getUriPrefix();
     }
 
     public void request(HttpServletRequest request, MethodSignature method, Object[] args) {
-        if (this.enable && !request.getServletPath().equals(ApiConstant.DEFAULT_ERROR_URI)) {
+        if (this.enable && request.getServletPath().startsWith(prefix)) {
             try {
                 Map<String, Object> content = new LinkedHashMap<>();
                 content.put("uri", request.getServletPath());