From bfcabfd068e21e9a913fae63f6ee268fd99abd11 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Mon, 4 Mar 2019 20:48:54 +0800 Subject: [PATCH] add switch to instance CommonFilter in SentinelProperties --- .../src/main/asciidoc-zh/sentinel.adoc | 1 + .../src/main/asciidoc/sentinel.adoc | 1 + .../alibaba/sentinel/SentinelProperties.java | 27 ++++++++++++++----- .../SentinelWebAutoConfiguration.java | 12 +++++---- ...itional-spring-configuration-metadata.json | 6 +++++ 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc index b0a5fb45..4cd91b44 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc @@ -272,6 +272,7 @@ Sentinel Endpoint 里暴露的信息非常有用。包括当前应用的所有 |`spring.cloud.sentinel.transport.client-ip`|客户端IP| |`spring.cloud.sentinel.filter.order`|Servlet Filter的加载顺序。Starter内部会构造这个filter|Integer.MIN_VALUE |`spring.cloud.sentinel.filter.url-patterns`|数据类型是数组。表示Servlet Filter的url pattern集合|/* +|`spring.cloud.sentinel.filter.enabled`|Enable to instance CommonFilter|true |`spring.cloud.sentinel.metric.charset`|metric文件字符集|UTF-8 |`spring.cloud.sentinel.metric.file-single-size`|Sentinel metric 单个文件的大小| |`spring.cloud.sentinel.metric.file-total-count`|Sentinel metric 总文件数量| diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc index d5e6d03a..4cfb6bff 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc @@ -271,6 +271,7 @@ The following table shows all the configurations of Spring Cloud Alibaba Sentine |`spring.cloud.sentinel.transport.client-ip`|Client IP| |`spring.cloud.sentinel.filter.order`|Loading order of Servlet Filter. The filter will be constructed in the Starter|Integer.MIN_VALUE |`spring.cloud.sentinel.filter.url-patterns`|Data type is array. Refers to the collection of Servlet Filter ULR patterns|/* +|`spring.cloud.sentinel.filter.enabled`|Enable to instance CommonFilter|true |`spring.cloud.sentinel.metric.charset`|metric file character set|UTF-8 |`spring.cloud.sentinel.metric.fileSingleSize`|Sentinel metric single file size| |`spring.cloud.sentinel.metric.fileTotalCount`|Sentinel metric total file number| diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java index d4621bd7..68cedb64 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java @@ -16,17 +16,18 @@ package org.springframework.cloud.alibaba.sentinel; -import com.alibaba.csp.sentinel.config.SentinelConfig; -import com.alibaba.csp.sentinel.log.LogBase; -import com.alibaba.csp.sentinel.transport.config.TransportConfig; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.alibaba.sentinel.datasource.config.DataSourcePropertiesConfiguration; import org.springframework.core.Ordered; import org.springframework.validation.annotation.Validated; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import com.alibaba.csp.sentinel.config.SentinelConfig; +import com.alibaba.csp.sentinel.log.LogBase; +import com.alibaba.csp.sentinel.transport.config.TransportConfig; /** * {@link ConfigurationProperties} for Sentinel. @@ -306,6 +307,12 @@ public class SentinelProperties { */ private List urlPatterns; + /** + * Enable to instance + * {@link com.alibaba.csp.sentinel.adapter.servlet.CommonFilter}. + */ + private boolean enabled = true; + public int getOrder() { return this.order; } @@ -321,6 +328,14 @@ public class SentinelProperties { public void setUrlPatterns(List urlPatterns) { this.urlPatterns = urlPatterns; } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } } public static class Log { diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java index 1eea41e9..5a73f2cb 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java @@ -16,7 +16,10 @@ package org.springframework.cloud.alibaba.sentinel; -import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.Filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,9 +31,7 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.servlet.Filter; -import java.util.ArrayList; -import java.util.List; +import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; /** * @author xiaojing @@ -48,7 +49,8 @@ public class SentinelWebAutoConfiguration { private SentinelProperties properties; @Bean - public FilterRegistrationBean servletRequestListener() { + @ConditionalOnProperty(name = "spring.cloud.sentinel.filter.enabled", matchIfMissing = true) + public FilterRegistrationBean sentinelFilter() { FilterRegistrationBean registration = new FilterRegistrationBean<>(); SentinelProperties.Filter filterConfig = properties.getFilter(); diff --git a/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json index b445fc6a..80fec1a5 100644 --- a/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -39,6 +39,12 @@ "defaultValue": "Integer.MIN_VALUE", "description": "sentinel filter chain order, will be set to FilterRegistrationBean." }, + { + "name": "spring.cloud.sentinel.filter.enabled", + "type": "java.lang.Boolean", + "defaultValue": true, + "description": "Enable to instance com.alibaba.csp.sentinel.adapter.servlet.CommonFilter." + }, { "name": "spring.cloud.sentinel.metric.charset", "type": "java.lang.String",