Преглед изворни кода

修改starter-api,将actuator默认配置挪到配置文件中,还原全局限流配置支持

Signed-off-by: luoshi <luoshi@qmth.com.cn>
luoshi пре 2 година
родитељ
комит
a9bab8b4dc

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

@@ -1,20 +0,0 @@
-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;
-    }
-}

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

@@ -1,22 +1,12 @@
 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;
+import org.springframework.context.annotation.PropertySource;
 
 @Configuration
 @ComponentScan("com.qmth.boot.api")
+@PropertySource("classpath:actuator.properties")
 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);
-    }
 }

+ 8 - 0
starter-api/src/main/java/com/qmth/boot/api/config/ApiConfig.java

@@ -39,6 +39,8 @@ public class ApiConfig {
     public ApiConfig(ApiProperties properties) {
         this.strict = properties.isGlobalStrict();
         this.auth = properties.isGlobalAuth();
+        //全局限流配置
+        buildRateLimitRule(properties.getGlobalRateLimit());
     }
 
     public ApiConfig(Aac annotation) {
@@ -127,4 +129,10 @@ public class ApiConfig {
             this.rateLimit = Arrays.stream(annotations).map(RateLimitRule::parse).collect(Collectors.toList());
         }
     }
+
+    private void buildRateLimitRule(String[] ratelimitArray) {
+        if (ArrayUtils.isNotEmpty(ratelimitArray)) {
+            this.rateLimit = Arrays.stream(ratelimitArray).map(RateLimitRule::parse).collect(Collectors.toList());
+        }
+    }
 }

+ 13 - 11
starter-api/src/main/java/com/qmth/boot/api/config/ApiProperties.java

@@ -2,11 +2,11 @@ package com.qmth.boot.api.config;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.lang.Nullable;
 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)
@@ -22,10 +22,10 @@ public class ApiProperties implements ApiConstant {
 
     private boolean globalAuth = false;
 
-    private boolean httpTrace = false;
+    @Nullable
+    private String[] globalRateLimit = null;
 
-    @NotNull
-    private ActuatorProperties actuator = new ActuatorProperties();
+    private boolean httpTrace = false;
 
     public String getUriPrefix() {
         return uriPrefix;
@@ -55,6 +55,15 @@ public class ApiProperties implements ApiConstant {
         return globalAuth;
     }
 
+    @Nullable
+    public String[] getGlobalRateLimit() {
+        return globalRateLimit;
+    }
+
+    public void setGlobalRateLimit(@Nullable String[] globalRateLimit) {
+        this.globalRateLimit = globalRateLimit;
+    }
+
     public void setGlobalAuth(boolean globalAuth) {
         this.globalAuth = globalAuth;
     }
@@ -67,11 +76,4 @@ public class ApiProperties implements ApiConstant {
         this.httpTrace = httpTrace;
     }
 
-    public ActuatorProperties getActuator() {
-        return actuator;
-    }
-
-    public void setActuator(ActuatorProperties actuator) {
-        this.actuator = actuator;
-    }
 }

+ 2 - 0
starter-api/src/main/resources/actuator.properties

@@ -0,0 +1,2 @@
+management.endpoints.web.exposure.include=info,health,metrics,prometheus
+management.endpoint.health.show-details=always