From ee4d802f8c8bad3e972887f687a5b9e0e847368b Mon Sep 17 00:00:00 2001 From: xiejiashuai <707094980@qq.com> Date: Sat, 8 Sep 2018 13:07:30 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9B=B4=E5=A4=9ASenti?= =?UTF-8?q?nel=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/sentinel/SentinelProperties.java | 287 ++++++++++++++---- .../SentinelWebAutoConfiguration.java | 96 ++++-- .../custom/SentinelAutoConfiguration.java | 70 +++-- .../SentinelAutoConfigurationTests.java | 2 +- 4 files changed, 337 insertions(+), 118 deletions(-) diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java index eb1f2be77d..8e51c85534 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java @@ -16,12 +16,12 @@ package org.springframework.cloud.alibaba.sentinel; -import java.util.List; - import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.core.Ordered; +import java.util.List; + /** * @author xiaojing * @author hengyunabc @@ -29,82 +29,245 @@ @ConfigurationProperties(prefix = SentinelConstants.PROPERTY_PREFIX) public class SentinelProperties { - /** - * Enable sentinel auto configure, the default value is true - */ - private boolean enabled = true; - /** - * sentinel api port,default value is 8721 - */ - private String port = "8721"; + /** + * 是否提前初始化心跳连接 + */ + private boolean eager = false; + + /** + * Enable sentinel auto configure, the default value is true + */ + private boolean enabled = true; + + /** + * 字符编码集 + */ + private String charset = "UTF-8"; + + /** + * 通信相关配置 + */ + @NestedConfigurationProperty + private Transport transport = new Transport(); + + /** + * 监控数据相关配置 + */ + @NestedConfigurationProperty + private Metric metric = new Metric(); + + /** + * web 相关配置 + */ + @NestedConfigurationProperty + private Servlet servlet = new Servlet(); + + /** + * 限流相关 + */ + @NestedConfigurationProperty + private Filter filter = new Filter(); + + @NestedConfigurationProperty + private Flow flow = new Flow(); + + public boolean isEager() { + return eager; + } + + public void setEager(boolean eager) { + this.eager = eager; + } + + public Flow getFlow() { + return flow; + } + + public void setFlow(Flow flow) { + this.flow = flow; + } + + public String getCharset() { + return charset; + } + + public void setCharset(String charset) { + this.charset = charset; + } + + public Transport getTransport() { + return transport; + } + + public void setTransport(Transport transport) { + this.transport = transport; + } + + public Metric getMetric() { + return metric; + } + + public void setMetric(Metric metric) { + this.metric = metric; + } + + public Servlet getServlet() { + return servlet; + } + + public void setServlet(Servlet servlet) { + this.servlet = servlet; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public Filter getFilter() { + return filter; + } + + public void setFilter(Filter filter) { + this.filter = filter; + } + + public static class Flow { + + /** + * 限流冷启动因子 + */ + private String coldFactor = "3"; + + public String getColdFactor() { + return coldFactor; + } + + public void setColdFactor(String coldFactor) { + this.coldFactor = coldFactor; + } + + } + + public static class Servlet { + + /** + * url 限流后的处理页面 + */ + private String blockPage; + + public String getBlockPage() { + return blockPage; + } + + public void setBlockPage(String blockPage) { + this.blockPage = blockPage; + } + } + + public static class Metric { + + /** + * 监控数据写磁盘时单个文件的大小 + */ + private String fileSingleSize; + + /** + * 监控数据在磁盘上的总数量 + */ + private String fileTotalCount; + + public String getFileSingleSize() { + return fileSingleSize; + } + + public void setFileSingleSize(String fileSingleSize) { + this.fileSingleSize = fileSingleSize; + } + + public String getFileTotalCount() { + return fileTotalCount; + } + + public void setFileTotalCount(String fileTotalCount) { + this.fileTotalCount = fileTotalCount; + } + } + + public static class Transport { + + /** + * sentinel api port,default value is 8721 + */ + private String port = "8721"; - /** - * Sentinel dashboard address, won't try to connect dashboard when address is empty - */ - private String dashboard = ""; + /** + * Sentinel dashboard address, won't try to connect dashboard when address is empty + */ + private String dashboard = ""; - @NestedConfigurationProperty - private Filter filter; + /** + * 客户端和DashBord心跳发送时间 + */ + private String heartbeatIntervalMs; - public boolean isEnabled() { - return enabled; - } + public String getHeartbeatIntervalMs() { + return heartbeatIntervalMs; + } - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } + public void setHeartbeatIntervalMs(String heartbeatIntervalMs) { + this.heartbeatIntervalMs = heartbeatIntervalMs; + } - public String getPort() { - return port; - } + public String getPort() { + return port; + } - public void setPort(String port) { - this.port = port; - } + public void setPort(String port) { + this.port = port; + } - public String getDashboard() { - return dashboard; - } + public String getDashboard() { + return dashboard; + } - public void setDashboard(String dashboard) { - this.dashboard = dashboard; - } + public void setDashboard(String dashboard) { + this.dashboard = dashboard; + } - public Filter getFilter() { - return filter; - } + } - public void setFilter(Filter filter) { - this.filter = filter; - } + public static class Filter { - public static class Filter { + /** + * Sentinel filter chain order. + */ + private int order = Ordered.HIGHEST_PRECEDENCE; - /** - * Sentinel filter chain order. - */ - private int order = Ordered.HIGHEST_PRECEDENCE; + /** + * URL pattern for sentinel filter,default is /* + */ + private List urlPatterns; - /** - * URL pattern for sentinel filter,default is /* - */ - private List urlPatterns; + public int getOrder() { + return this.order; + } - public int getOrder() { - return this.order; - } + public void setOrder(int order) { + this.order = order; + } - public void setOrder(int order) { - this.order = order; - } + public List getUrlPatterns() { + return urlPatterns; + } - public List getUrlPatterns() { - return urlPatterns; - } + public void setUrlPatterns(List urlPatterns) { + this.urlPatterns = urlPatterns; + } + } - public void setUrlPatterns(List urlPatterns) { - this.urlPatterns = urlPatterns; - } - } } diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java index f982e8ceb2..967819addb 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java @@ -16,22 +16,28 @@ package org.springframework.cloud.alibaba.sentinel; -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.Filter; - +import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; +import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; +import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; +import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; +import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; -import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; +import javax.annotation.PostConstruct; +import javax.servlet.Filter; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; /** * @author xiaojing @@ -42,37 +48,63 @@ @EnableConfigurationProperties(SentinelProperties.class) public class SentinelWebAutoConfiguration { - private static final Logger logger = LoggerFactory - .getLogger(SentinelWebAutoConfiguration.class); + private static final Logger logger = LoggerFactory + .getLogger(SentinelWebAutoConfiguration.class); + + @Autowired + private SentinelProperties properties; + + @Autowired + @Qualifier + private Optional urlBlockHandlerOptional; + + @Autowired + @Qualifier + private Optional urlCleanerOptional; + + @PostConstruct + public void init() { + + if (urlBlockHandlerOptional.isPresent()) { + WebCallbackManager.setUrlBlockHandler(urlBlockHandlerOptional.get()); + } + + if (urlCleanerOptional.isPresent()) { + WebCallbackManager.setUrlCleaner(urlCleanerOptional.get()); + } + + if (StringUtils.hasText(properties.getServlet().getBlockPage())) { + WebServletConfig.setBlockPage(properties.getServlet().getBlockPage()); + } + + } - @Autowired - private SentinelProperties properties; + @Bean + public FilterRegistrationBean servletRequestListener() { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); - @Bean - public FilterRegistrationBean servletRequestListener() { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); + SentinelProperties.Filter filterConfig = properties.getFilter(); - SentinelProperties.Filter filterConfig = properties.getFilter(); + if (null == filterConfig) { + filterConfig = new SentinelProperties.Filter(); + properties.setFilter(filterConfig); + } - if (null == filterConfig) { - filterConfig = new SentinelProperties.Filter(); - properties.setFilter(filterConfig); - } + if (filterConfig.getUrlPatterns() == null + || filterConfig.getUrlPatterns().isEmpty()) { + List defaultPatterns = new ArrayList<>(); + defaultPatterns.add("/*"); + filterConfig.setUrlPatterns(defaultPatterns); + } - if (filterConfig.getUrlPatterns() == null - || filterConfig.getUrlPatterns().isEmpty()) { - List defaultPatterns = new ArrayList<>(); - defaultPatterns.add("/*"); - filterConfig.setUrlPatterns(defaultPatterns); - } + registration.addUrlPatterns(filterConfig.getUrlPatterns().toArray(new String[0])); + Filter filter = new CommonFilter(); + registration.setFilter(filter); + registration.setOrder(filterConfig.getOrder()); + logger.info("[Sentinel Starter] register Sentinel with urlPatterns: {}.", + filterConfig.getUrlPatterns()); + return registration; - registration.addUrlPatterns(filterConfig.getUrlPatterns().toArray(new String[0])); - Filter filter = new CommonFilter(); - registration.setFilter(filter); - registration.setOrder(filterConfig.getOrder()); - logger.info("[Sentinel Starter] register Sentinel with urlPatterns: {}.", - filterConfig.getUrlPatterns()); - return registration; + } - } } \ No newline at end of file diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java index 6234229266..98b3a6ddd5 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java @@ -16,6 +16,10 @@ package org.springframework.cloud.alibaba.sentinel.custom; +import com.alibaba.csp.sentinel.Env; +import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; +import com.alibaba.csp.sentinel.config.SentinelConfig; +import com.alibaba.csp.sentinel.node.NodeBuilder; import com.alibaba.csp.sentinel.transport.config.TransportConfig; import com.alibaba.csp.sentinel.util.AppNameUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -29,9 +33,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; -import org.springframework.web.client.RestTemplate; - -import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; import javax.annotation.PostConstruct; @@ -51,34 +52,57 @@ public class SentinelAutoConfiguration { @PostConstruct private void init() { + if (StringUtils.isEmpty(System.getProperty(AppNameUtil.APP_NAME))) { System.setProperty(AppNameUtil.APP_NAME, projectName); } - if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT))) { - System.setProperty(TransportConfig.SERVER_PORT, properties.getPort()); + if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT)) && StringUtils.hasText(properties.getTransport().getPort())) { + System.setProperty(TransportConfig.SERVER_PORT, properties.getTransport().getPort()); + } + if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER)) && StringUtils.hasText(properties.getTransport().getDashboard())) { + System.setProperty(TransportConfig.CONSOLE_SERVER, properties.getTransport().getDashboard()); + } + if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS)) && StringUtils.hasText(properties.getTransport().getHeartbeatIntervalMs())) { + System.setProperty(TransportConfig.HEARTBEAT_INTERVAL_MS, properties.getTransport().getHeartbeatIntervalMs()); + } + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.CHARSET)) && StringUtils.hasText(properties.getCharset())) { + System.setProperty(SentinelConfig.CHARSET, properties.getCharset()); + } + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE)) && StringUtils.hasText(properties.getMetric().getFileSingleSize())) { + System.setProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE, properties.getMetric().getFileSingleSize()); } - if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER))) { - System.setProperty(TransportConfig.CONSOLE_SERVER, properties.getDashboard()); + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT)) && StringUtils.hasText(properties.getMetric().getFileTotalCount())) { + System.setProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT, properties.getMetric().getFileTotalCount()); } + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.COLD_FACTOR)) && StringUtils.hasText(properties.getFlow().getColdFactor())) { + System.setProperty(SentinelConfig.COLD_FACTOR, properties.getFlow().getColdFactor()); + } + + // 提前初始化 + if (properties.isEager()) { + // 加载Env + NodeBuilder nodeBuilder = Env.nodeBuilder; + } + } - @Bean - @ConditionalOnMissingBean - public SentinelResourceAspect sentinelResourceAspect() { - return new SentinelResourceAspect(); - } + @Bean + @ConditionalOnMissingBean + public SentinelResourceAspect sentinelResourceAspect() { + return new SentinelResourceAspect(); + } - @Bean - @ConditionalOnMissingBean - @ConditionalOnClass(name = "org.springframework.web.client.RestTemplate") - public SentinelBeanPostProcessor sentinelBeanPostProcessor() { - return new SentinelBeanPostProcessor(); - } + @Bean + @ConditionalOnMissingBean + @ConditionalOnClass(name = "org.springframework.web.client.RestTemplate") + public SentinelBeanPostProcessor sentinelBeanPostProcessor() { + return new SentinelBeanPostProcessor(); + } - @Bean - @ConditionalOnMissingBean - public SentinelDataSourcePostProcessor sentinelDataSourcePostProcessor() { - return new SentinelDataSourcePostProcessor(); - } + @Bean + @ConditionalOnMissingBean + public SentinelDataSourcePostProcessor sentinelDataSourcePostProcessor() { + return new SentinelDataSourcePostProcessor(); + } } diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java index 29fbc8ee26..521e7d7c9a 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java @@ -65,7 +65,7 @@ public void testProperties() { this.contextRunner.run(context -> { SentinelProperties sentinelProperties = context .getBean(SentinelProperties.class); - assertThat(sentinelProperties.getPort()).isEqualTo("8888"); + assertThat(sentinelProperties.getTransport().getPort()).isEqualTo("8888"); assertThat(sentinelProperties.getFilter().getUrlPatterns().size()) .isEqualTo(2); assertThat(sentinelProperties.getFilter().getUrlPatterns().get(0)) From 9e5de2eabb9b7007c5f2e49ce81a12e7bb6c7b4f Mon Sep 17 00:00:00 2001 From: xiejiashuai <707094980@qq.com> Date: Fri, 21 Sep 2018 21:24:15 +0800 Subject: [PATCH 02/17] add author --- .../cloud/alibaba/sentinel/SentinelProperties.java | 1 + .../cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java | 1 + .../cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java | 1 + 3 files changed, 3 insertions(+) diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java index 8e51c85534..0d367843f3 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelProperties.java @@ -25,6 +25,7 @@ /** * @author xiaojing * @author hengyunabc + * @author jiashuai.xie */ @ConfigurationProperties(prefix = SentinelConstants.PROPERTY_PREFIX) public class SentinelProperties { diff --git a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java index 967819addb..f16a96ceb6 100644 --- a/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel-autoconfigure/src/main/java/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java @@ -41,6 +41,7 @@ /** * @author xiaojing + * @author jiashuai.xie Date: Sat, 22 Sep 2018 10:30:15 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=AF=BC=E5=85=A5=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sentinel/SentinelWebAutoConfiguration.java | 8 -------- .../custom/SentinelAutoConfiguration.java | 18 +++++++++--------- 2 files changed, 9 insertions(+), 17 deletions(-) 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 2b51b36fb6..c19630e8e6 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 @@ -17,27 +17,19 @@ package org.springframework.cloud.alibaba.sentinel; import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; -import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; -import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; -import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; -import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.util.StringUtils; -import javax.annotation.PostConstruct; import javax.servlet.Filter; import java.util.ArrayList; import java.util.List; -import java.util.Optional; /** * @author xiaojing diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java index 0ed8166003..c9e77f35c1 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java @@ -17,15 +17,14 @@ package org.springframework.cloud.alibaba.sentinel.custom; import com.alibaba.csp.sentinel.Env; -import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; -import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; -import com.alibaba.csp.sentinel.config.SentinelConfig; -import com.alibaba.csp.sentinel.node.NodeBuilder; -import java.util.Optional; import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; +import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; +import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; +import com.alibaba.csp.sentinel.config.SentinelConfig; import com.alibaba.csp.sentinel.init.InitExecutor; +import com.alibaba.csp.sentinel.node.NodeBuilder; import com.alibaba.csp.sentinel.transport.config.TransportConfig; import com.alibaba.csp.sentinel.util.AppNameUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +40,7 @@ import org.springframework.util.StringUtils; import javax.annotation.PostConstruct; +import java.util.Optional; /** * @author xiaojing @@ -51,11 +51,11 @@ @EnableConfigurationProperties(SentinelProperties.class) public class SentinelAutoConfiguration { - @Value("${project.name:${spring.application.name:}}") - private String projectName; + @Value("${project.name:${spring.application.name:}}") + private String projectName; - @Autowired - private SentinelProperties properties; + @Autowired + private SentinelProperties properties; @Autowired private Optional urlCleanerOptional; From b0011bf328d4f3037419b0e1cde08ca1d469b51d Mon Sep 17 00:00:00 2001 From: flystar32 Date: Wed, 26 Sep 2018 10:52:47 +0800 Subject: [PATCH 04/17] rename alibaba storage to alicloud storage --- Roadmap-zh.md | 2 +- pom.xml | 4 +++- spring-cloud-alibaba-dependencies/pom.xml | 4 ++-- .../storage-example/pom.xml | 4 ++-- .../storage-example/readme-zh.md | 4 ++-- .../storage-example/readme.md | 4 ++-- .../alibaba/nacos/NacosDiscoveryClient.java | 6 ++++-- .../pom.xml | 4 ++-- .../alibaba/storage/OSSApplicationListener.java | 0 .../alibaba/storage/OSSAutoConfiguration.java | 0 .../cloud/alibaba/storage/OSSConstants.java | 0 .../cloud/alibaba/storage/OSSProperties.java | 0 .../alibaba/storage/endpoint/OSSEndpoint.java | 0 .../endpoint/OSSEndpointAutoConfiguration.java | 0 .../resource/OSSStorageProtocolResolver.java | 0 .../storage/resource/OSSStorageResource.java | 0 .../src/main/resources/META-INF/spring.factories | 0 .../storage/test/OSSAutoConfigurationTests.java | 0 .../OSSMultiClientAutoConfigurationTests.java | 0 spring-cloud-starter-alibaba/pom.xml | 1 - spring-cloud-starter-alicloud/pom.xml | 16 ++++++++++++++++ .../pom.xml | 8 ++++---- 22 files changed, 38 insertions(+), 19 deletions(-) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/pom.xml (94%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/main/resources/META-INF/spring.factories (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java (100%) rename {spring-cloud-alibaba-storage => spring-cloud-alicloud-storage}/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java (100%) create mode 100644 spring-cloud-starter-alicloud/pom.xml rename {spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-storage => spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage}/pom.xml (72%) diff --git a/Roadmap-zh.md b/Roadmap-zh.md index 53ac35f2c8..2fc2444816 100644 --- a/Roadmap-zh.md +++ b/Roadmap-zh.md @@ -15,7 +15,7 @@ Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解 **Nacos** 阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 -**Aliyun OSS** +**AliCloud OSS** 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 ## 即将加入的组件 diff --git a/pom.xml b/pom.xml index b5e447e0bb..f0f49e1d97 100644 --- a/pom.xml +++ b/pom.xml @@ -74,12 +74,14 @@ spring-cloud-alibaba-dependencies spring-cloud-alibaba-sentinel - spring-cloud-alibaba-storage + spring-cloud-alibaba-nacos-config spring-cloud-alibaba-nacos-discovery spring-cloud-alibaba-examples spring-cloud-alibaba-test spring-cloud-starter-alibaba + spring-cloud-starter-alicloud + spring-cloud-alicloud-storage diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 0610dbe0cb..3f32646a3e 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -97,7 +97,7 @@ org.springframework.cloud - spring-cloud-alibaba-storage + spring-cloud-alicloud-storage ${project.version} @@ -119,7 +119,7 @@ org.springframework.cloud - spring-cloud-starter-alibaba-storage + spring-cloud-starter-alicloud-storage ${project.version} diff --git a/spring-cloud-alibaba-examples/storage-example/pom.xml b/spring-cloud-alibaba-examples/storage-example/pom.xml index 98065cf4a0..c42de657d5 100644 --- a/spring-cloud-alibaba-examples/storage-example/pom.xml +++ b/spring-cloud-alibaba-examples/storage-example/pom.xml @@ -12,7 +12,7 @@ storage-example jar - Example demonstrating how to use storage + Example demonstrating how to use alicloud storage @@ -22,7 +22,7 @@ org.springframework.cloud - spring-cloud-starter-alibaba-storage + spring-cloud-starter-alicloud-storage diff --git a/spring-cloud-alibaba-examples/storage-example/readme-zh.md b/spring-cloud-alibaba-examples/storage-example/readme-zh.md index 40652e7954..e287c761b4 100644 --- a/spring-cloud-alibaba-examples/storage-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/storage-example/readme-zh.md @@ -13,11 +13,11 @@ **注意:本节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您只需修改 accessKeyId、secretAccessKey、region 即可。** -1. 修改 pom.xml 文件,引入 alibaba-storage starter。 +1. 修改 pom.xml 文件,引入 alicloud-storage starter。 org.springframework.cloud - spring-cloud-starter-alibaba-storage + spring-cloud-starter-alicloud-storage 2. 在配置文件中配置 OSS 服务对应的 accessKeyId、secretAccessKey 和 region。 diff --git a/spring-cloud-alibaba-examples/storage-example/readme.md b/spring-cloud-alibaba-examples/storage-example/readme.md index 45fa51b974..394ad207fd 100644 --- a/spring-cloud-alibaba-examples/storage-example/readme.md +++ b/spring-cloud-alibaba-examples/storage-example/readme.md @@ -13,11 +13,11 @@ If your applications are Spring Cloud applications and you need to use Alibaba C Before we start the demo, let's learn how to connect OSS to a Spring Cloud application. **Note: This section is to show you how to connect to oss. The actual configurations have been completed in the following example, and you only need to specify your accessKeyId, secretAccessKey and region.** -1. Add dependency spring-cloud-starter-alibaba-storage in the pom.xml file in your Spring Cloud project. +1. Add dependency spring-cloud-starter-alicloud-storage in the pom.xml file in your Spring Cloud project. org.springframework.cloud - spring-cloud-starter-alibaba-storage + spring-cloud-starter-alicloud-storage 2. Configure accessKeyId, secretAccessKey and region in application.properties. diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java index 5706a4fc8e..d32a6b0d3a 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java @@ -50,7 +50,7 @@ public String description() { public List getInstances(String serviceId) { try { NamingService namingService = nacosRegistration.getNacosNamingService(); - List instances = namingService.selectInstances(serviceId, true); + List instances = namingService.getAllInstances(serviceId); return hostToServiceInstanceList(instances, serviceId); } catch (Exception e) { @@ -79,7 +79,9 @@ private static List hostToServiceInstanceList( List instances, String serviceId) { List result = new ArrayList(instances.size()); for (Instance instance : instances) { - result.add(hostToServiceInstance(instance, serviceId)); + if(instance.isHealthy()) { + result.add(hostToServiceInstance(instance, serviceId)); + } } return result; } diff --git a/spring-cloud-alibaba-storage/pom.xml b/spring-cloud-alicloud-storage/pom.xml similarity index 94% rename from spring-cloud-alibaba-storage/pom.xml rename to spring-cloud-alicloud-storage/pom.xml index 29bb54ae5d..8a7ede0882 100644 --- a/spring-cloud-alibaba-storage/pom.xml +++ b/spring-cloud-alicloud-storage/pom.xml @@ -10,8 +10,8 @@ 4.0.0 org.springframework.cloud - spring-cloud-alibaba-storage - Spring Cloud Alibaba Storage Autoconfigure + spring-cloud-alicloud-storage + Spring Cloud Alibaba Cloud Storage diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java diff --git a/spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java b/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java similarity index 100% rename from spring-cloud-alibaba-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java rename to spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java diff --git a/spring-cloud-alibaba-storage/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories similarity index 100% rename from spring-cloud-alibaba-storage/src/main/resources/META-INF/spring.factories rename to spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories diff --git a/spring-cloud-alibaba-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java b/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java similarity index 100% rename from spring-cloud-alibaba-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java rename to spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java diff --git a/spring-cloud-alibaba-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java b/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java similarity index 100% rename from spring-cloud-alibaba-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java rename to spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java diff --git a/spring-cloud-starter-alibaba/pom.xml b/spring-cloud-starter-alibaba/pom.xml index a5d8e35fcf..877646ae2b 100644 --- a/spring-cloud-starter-alibaba/pom.xml +++ b/spring-cloud-starter-alibaba/pom.xml @@ -14,6 +14,5 @@ spring-cloud-starter-alibaba-nacos-config spring-cloud-starter-alibaba-nacos-discovery spring-cloud-starter-alibaba-sentinel - spring-cloud-starter-alibaba-storage \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml new file mode 100644 index 0000000000..4996874168 --- /dev/null +++ b/spring-cloud-starter-alicloud/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + org.springframework.cloud + spring-cloud-alibaba + 0.2.0.BUILD-SNAPSHOT + + spring-cloud-starter-alicloud + pom + Spring Cloud Alibaba Cloud Starters + Spring Cloud Alibaba Cloud Starters + + spring-cloud-starter-alicloud-storage + + \ No newline at end of file diff --git a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-storage/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml similarity index 72% rename from spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-storage/pom.xml rename to spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml index bea93264aa..6e7a31788b 100644 --- a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-storage/pom.xml +++ b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml @@ -4,16 +4,16 @@ org.springframework.cloud - spring-cloud-starter-alibaba + spring-cloud-starter-alicloud 0.2.0.BUILD-SNAPSHOT - spring-cloud-starter-alibaba-storage - Spring Cloud Starter Alibaba Storage + spring-cloud-starter-alicloud-storage + Spring Cloud Starter Alibaba Cloud Storage org.springframework.cloud - spring-cloud-alibaba-storage + spring-cloud-alicloud-storage com.aliyun.oss From 03a64885d4b7d94df9d4622bb891f874af929957 Mon Sep 17 00:00:00 2001 From: xiejiashuai <707094980@qq.com> Date: Thu, 27 Sep 2018 10:08:23 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=E4=B8=BAeclipse=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/sentinel/SentinelProperties.java | 428 +++++++++--------- .../SentinelWebAutoConfiguration.java | 62 +-- .../custom/SentinelAutoConfiguration.java | 191 ++++---- 3 files changed, 350 insertions(+), 331 deletions(-) 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 0d367843f3..3f91a3b0b5 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,12 +16,12 @@ package org.springframework.cloud.alibaba.sentinel; +import java.util.List; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.core.Ordered; -import java.util.List; - /** * @author xiaojing * @author hengyunabc @@ -30,245 +30,245 @@ @ConfigurationProperties(prefix = SentinelConstants.PROPERTY_PREFIX) public class SentinelProperties { + /** + * 是否提前初始化心跳连接 + */ + private boolean eager = false; + + /** + * Enable sentinel auto configure, the default value is true + */ + private boolean enabled = true; + + /** + * 字符编码集 + */ + private String charset = "UTF-8"; + + /** + * 通信相关配置 + */ + @NestedConfigurationProperty + private Transport transport = new Transport(); + + /** + * 监控数据相关配置 + */ + @NestedConfigurationProperty + private Metric metric = new Metric(); + + /** + * web 相关配置 + */ + @NestedConfigurationProperty + private Servlet servlet = new Servlet(); + + /** + * 限流相关 + */ + @NestedConfigurationProperty + private Filter filter = new Filter(); + + @NestedConfigurationProperty + private Flow flow = new Flow(); - /** - * 是否提前初始化心跳连接 - */ - private boolean eager = false; - - /** - * Enable sentinel auto configure, the default value is true - */ - private boolean enabled = true; - - /** - * 字符编码集 - */ - private String charset = "UTF-8"; - - /** - * 通信相关配置 - */ - @NestedConfigurationProperty - private Transport transport = new Transport(); - - /** - * 监控数据相关配置 - */ - @NestedConfigurationProperty - private Metric metric = new Metric(); - - /** - * web 相关配置 - */ - @NestedConfigurationProperty - private Servlet servlet = new Servlet(); - - /** - * 限流相关 - */ - @NestedConfigurationProperty - private Filter filter = new Filter(); - - @NestedConfigurationProperty - private Flow flow = new Flow(); - - public boolean isEager() { - return eager; - } - - public void setEager(boolean eager) { - this.eager = eager; - } - - public Flow getFlow() { - return flow; - } - - public void setFlow(Flow flow) { - this.flow = flow; - } - - public String getCharset() { - return charset; - } - - public void setCharset(String charset) { - this.charset = charset; - } - - public Transport getTransport() { - return transport; - } - - public void setTransport(Transport transport) { - this.transport = transport; - } - - public Metric getMetric() { - return metric; - } - - public void setMetric(Metric metric) { - this.metric = metric; - } - - public Servlet getServlet() { - return servlet; - } - - public void setServlet(Servlet servlet) { - this.servlet = servlet; - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public Filter getFilter() { - return filter; - } - - public void setFilter(Filter filter) { - this.filter = filter; - } - - public static class Flow { - - /** - * 限流冷启动因子 - */ - private String coldFactor = "3"; - - public String getColdFactor() { - return coldFactor; - } - - public void setColdFactor(String coldFactor) { - this.coldFactor = coldFactor; - } + public boolean isEager() { + return eager; + } - } + public void setEager(boolean eager) { + this.eager = eager; + } + + public Flow getFlow() { + return flow; + } + + public void setFlow(Flow flow) { + this.flow = flow; + } + + public String getCharset() { + return charset; + } + + public void setCharset(String charset) { + this.charset = charset; + } + + public Transport getTransport() { + return transport; + } - public static class Servlet { + public void setTransport(Transport transport) { + this.transport = transport; + } + + public Metric getMetric() { + return metric; + } + + public void setMetric(Metric metric) { + this.metric = metric; + } + + public Servlet getServlet() { + return servlet; + } + + public void setServlet(Servlet servlet) { + this.servlet = servlet; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public Filter getFilter() { + return filter; + } + + public void setFilter(Filter filter) { + this.filter = filter; + } + + public static class Flow { + + /** + * 限流冷启动因子 + */ + private String coldFactor = "3"; + + public String getColdFactor() { + return coldFactor; + } + + public void setColdFactor(String coldFactor) { + this.coldFactor = coldFactor; + } - /** - * url 限流后的处理页面 - */ - private String blockPage; + } + + public static class Servlet { - public String getBlockPage() { - return blockPage; - } + /** + * url 限流后的处理页面 + */ + private String blockPage; - public void setBlockPage(String blockPage) { - this.blockPage = blockPage; - } - } + public String getBlockPage() { + return blockPage; + } - public static class Metric { + public void setBlockPage(String blockPage) { + this.blockPage = blockPage; + } + } - /** - * 监控数据写磁盘时单个文件的大小 - */ - private String fileSingleSize; + public static class Metric { - /** - * 监控数据在磁盘上的总数量 - */ - private String fileTotalCount; + /** + * 监控数据写磁盘时单个文件的大小 + */ + private String fileSingleSize; - public String getFileSingleSize() { - return fileSingleSize; - } + /** + * 监控数据在磁盘上的总数量 + */ + private String fileTotalCount; - public void setFileSingleSize(String fileSingleSize) { - this.fileSingleSize = fileSingleSize; - } + public String getFileSingleSize() { + return fileSingleSize; + } - public String getFileTotalCount() { - return fileTotalCount; - } + public void setFileSingleSize(String fileSingleSize) { + this.fileSingleSize = fileSingleSize; + } - public void setFileTotalCount(String fileTotalCount) { - this.fileTotalCount = fileTotalCount; - } - } + public String getFileTotalCount() { + return fileTotalCount; + } - public static class Transport { + public void setFileTotalCount(String fileTotalCount) { + this.fileTotalCount = fileTotalCount; + } + } - /** - * sentinel api port,default value is 8721 - */ - private String port = "8721"; + public static class Transport { - /** - * Sentinel dashboard address, won't try to connect dashboard when address is empty - */ - private String dashboard = ""; + /** + * sentinel api port,default value is 8721 + */ + private String port = "8721"; - /** - * 客户端和DashBord心跳发送时间 - */ - private String heartbeatIntervalMs; + /** + * Sentinel dashboard address, won't try to connect dashboard when address is + * empty + */ + private String dashboard = ""; - public String getHeartbeatIntervalMs() { - return heartbeatIntervalMs; - } + /** + * 客户端和DashBord心跳发送时间 + */ + private String heartbeatIntervalMs; - public void setHeartbeatIntervalMs(String heartbeatIntervalMs) { - this.heartbeatIntervalMs = heartbeatIntervalMs; - } + public String getHeartbeatIntervalMs() { + return heartbeatIntervalMs; + } - public String getPort() { - return port; - } + public void setHeartbeatIntervalMs(String heartbeatIntervalMs) { + this.heartbeatIntervalMs = heartbeatIntervalMs; + } - public void setPort(String port) { - this.port = port; - } + public String getPort() { + return port; + } - public String getDashboard() { - return dashboard; - } + public void setPort(String port) { + this.port = port; + } - public void setDashboard(String dashboard) { - this.dashboard = dashboard; - } + public String getDashboard() { + return dashboard; + } - } + public void setDashboard(String dashboard) { + this.dashboard = dashboard; + } - public static class Filter { + } - /** - * Sentinel filter chain order. - */ - private int order = Ordered.HIGHEST_PRECEDENCE; + public static class Filter { - /** - * URL pattern for sentinel filter,default is /* - */ - private List urlPatterns; + /** + * Sentinel filter chain order. + */ + private int order = Ordered.HIGHEST_PRECEDENCE; - public int getOrder() { - return this.order; - } - - public void setOrder(int order) { - this.order = order; - } - - public List getUrlPatterns() { - return urlPatterns; - } - - public void setUrlPatterns(List urlPatterns) { - this.urlPatterns = urlPatterns; - } - } + /** + * URL pattern for sentinel filter,default is /* + */ + private List urlPatterns; + + public int getOrder() { + return this.order; + } + + public void setOrder(int order) { + this.order = order; + } + + public List getUrlPatterns() { + return urlPatterns; + } + + public void setUrlPatterns(List urlPatterns) { + this.urlPatterns = urlPatterns; + } + } } 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 c19630e8e6..8428632f84 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,11 @@ 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; import org.springframework.beans.factory.annotation.Autowired; @@ -27,9 +31,7 @@ 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 @@ -40,38 +42,38 @@ @EnableConfigurationProperties(SentinelProperties.class) public class SentinelWebAutoConfiguration { - private static final Logger logger = LoggerFactory - .getLogger(SentinelWebAutoConfiguration.class); + private static final Logger logger = LoggerFactory + .getLogger(SentinelWebAutoConfiguration.class); - @Autowired - private SentinelProperties properties; + @Autowired + private SentinelProperties properties; - @Bean - public FilterRegistrationBean servletRequestListener() { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); + @Bean + public FilterRegistrationBean servletRequestListener() { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); - SentinelProperties.Filter filterConfig = properties.getFilter(); + SentinelProperties.Filter filterConfig = properties.getFilter(); - if (null == filterConfig) { - filterConfig = new SentinelProperties.Filter(); - properties.setFilter(filterConfig); - } + if (null == filterConfig) { + filterConfig = new SentinelProperties.Filter(); + properties.setFilter(filterConfig); + } - if (filterConfig.getUrlPatterns() == null - || filterConfig.getUrlPatterns().isEmpty()) { - List defaultPatterns = new ArrayList<>(); - defaultPatterns.add("/*"); - filterConfig.setUrlPatterns(defaultPatterns); - } + if (filterConfig.getUrlPatterns() == null + || filterConfig.getUrlPatterns().isEmpty()) { + List defaultPatterns = new ArrayList<>(); + defaultPatterns.add("/*"); + filterConfig.setUrlPatterns(defaultPatterns); + } - registration.addUrlPatterns(filterConfig.getUrlPatterns().toArray(new String[0])); - Filter filter = new CommonFilter(); - registration.setFilter(filter); - registration.setOrder(filterConfig.getOrder()); - logger.info("[Sentinel Starter] register Sentinel with urlPatterns: {}.", - filterConfig.getUrlPatterns()); - return registration; + registration.addUrlPatterns(filterConfig.getUrlPatterns().toArray(new String[0])); + Filter filter = new CommonFilter(); + registration.setFilter(filter); + registration.setOrder(filterConfig.getOrder()); + logger.info("[Sentinel Starter] register Sentinel with urlPatterns: {}.", + filterConfig.getUrlPatterns()); + return registration; - } + } } \ No newline at end of file diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java index c9e77f35c1..ce0e7a9107 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java @@ -16,17 +16,10 @@ package org.springframework.cloud.alibaba.sentinel.custom; -import com.alibaba.csp.sentinel.Env; -import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; -import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; -import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; -import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; -import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; -import com.alibaba.csp.sentinel.config.SentinelConfig; -import com.alibaba.csp.sentinel.init.InitExecutor; -import com.alibaba.csp.sentinel.node.NodeBuilder; -import com.alibaba.csp.sentinel.transport.config.TransportConfig; -import com.alibaba.csp.sentinel.util.AppNameUtil; +import java.util.Optional; + +import javax.annotation.PostConstruct; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -39,8 +32,17 @@ import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; -import javax.annotation.PostConstruct; -import java.util.Optional; +import com.alibaba.csp.sentinel.Env; +import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; +import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; +import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; +import com.alibaba.csp.sentinel.adapter.servlet.config.WebServletConfig; +import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; +import com.alibaba.csp.sentinel.config.SentinelConfig; +import com.alibaba.csp.sentinel.init.InitExecutor; +import com.alibaba.csp.sentinel.node.NodeBuilder; +import com.alibaba.csp.sentinel.transport.config.TransportConfig; +import com.alibaba.csp.sentinel.util.AppNameUtil; /** * @author xiaojing @@ -51,79 +53,94 @@ @EnableConfigurationProperties(SentinelProperties.class) public class SentinelAutoConfiguration { - @Value("${project.name:${spring.application.name:}}") - private String projectName; - - @Autowired - private SentinelProperties properties; - - @Autowired - private Optional urlCleanerOptional; - - @Autowired - private Optional urlBlockHandlerOptional; - - @PostConstruct - private void init() { - - if (StringUtils.isEmpty(System.getProperty(AppNameUtil.APP_NAME))) { - System.setProperty(AppNameUtil.APP_NAME, projectName); - } - if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT)) && StringUtils.hasText(properties.getTransport().getPort())) { - System.setProperty(TransportConfig.SERVER_PORT, properties.getTransport().getPort()); - } - if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER)) && StringUtils.hasText(properties.getTransport().getDashboard())) { - System.setProperty(TransportConfig.CONSOLE_SERVER, properties.getTransport().getDashboard()); - } - if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS)) && StringUtils.hasText(properties.getTransport().getHeartbeatIntervalMs())) { - System.setProperty(TransportConfig.HEARTBEAT_INTERVAL_MS, properties.getTransport().getHeartbeatIntervalMs()); - } - if (StringUtils.isEmpty(System.getProperty(SentinelConfig.CHARSET)) && StringUtils.hasText(properties.getCharset())) { - System.setProperty(SentinelConfig.CHARSET, properties.getCharset()); - } - if (StringUtils.isEmpty(System.getProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE)) && StringUtils.hasText(properties.getMetric().getFileSingleSize())) { - System.setProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE, properties.getMetric().getFileSingleSize()); - } - if (StringUtils.isEmpty(System.getProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT)) && StringUtils.hasText(properties.getMetric().getFileTotalCount())) { - System.setProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT, properties.getMetric().getFileTotalCount()); - } - if (StringUtils.isEmpty(System.getProperty(SentinelConfig.COLD_FACTOR)) && StringUtils.hasText(properties.getFlow().getColdFactor())) { - System.setProperty(SentinelConfig.COLD_FACTOR, properties.getFlow().getColdFactor()); - } - - if (StringUtils.hasText(properties.getServlet().getBlockPage())) { - WebServletConfig.setBlockPage(properties.getServlet().getBlockPage()); - } - urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler); - urlCleanerOptional.ifPresent(WebCallbackManager::setUrlCleaner); - - InitExecutor.doInit(); - - // earlier initialize - if (properties.isEager()) { - NodeBuilder nodeBuilder = Env.nodeBuilder; - } - - } - - @Bean - @ConditionalOnMissingBean - public SentinelResourceAspect sentinelResourceAspect() { - return new SentinelResourceAspect(); - } - - - @Bean - @ConditionalOnMissingBean - @ConditionalOnClass(name = "org.springframework.web.client.RestTemplate") - public SentinelBeanPostProcessor sentinelBeanPostProcessor() { - return new SentinelBeanPostProcessor(); - } - - @Bean - @ConditionalOnMissingBean - public SentinelDataSourcePostProcessor sentinelDataSourcePostProcessor() { - return new SentinelDataSourcePostProcessor(); - } + @Value("${project.name:${spring.application.name:}}") + private String projectName; + + @Autowired + private SentinelProperties properties; + + @Autowired + private Optional urlCleanerOptional; + + @Autowired + private Optional urlBlockHandlerOptional; + + @PostConstruct + private void init() { + + if (StringUtils.isEmpty(System.getProperty(AppNameUtil.APP_NAME))) { + System.setProperty(AppNameUtil.APP_NAME, projectName); + } + if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT)) + && StringUtils.hasText(properties.getTransport().getPort())) { + System.setProperty(TransportConfig.SERVER_PORT, + properties.getTransport().getPort()); + } + if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER)) + && StringUtils.hasText(properties.getTransport().getDashboard())) { + System.setProperty(TransportConfig.CONSOLE_SERVER, + properties.getTransport().getDashboard()); + } + if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS)) + && StringUtils + .hasText(properties.getTransport().getHeartbeatIntervalMs())) { + System.setProperty(TransportConfig.HEARTBEAT_INTERVAL_MS, + properties.getTransport().getHeartbeatIntervalMs()); + } + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.CHARSET)) + && StringUtils.hasText(properties.getCharset())) { + System.setProperty(SentinelConfig.CHARSET, properties.getCharset()); + } + if (StringUtils + .isEmpty(System.getProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE)) + && StringUtils.hasText(properties.getMetric().getFileSingleSize())) { + System.setProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE, + properties.getMetric().getFileSingleSize()); + } + if (StringUtils + .isEmpty(System.getProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT)) + && StringUtils.hasText(properties.getMetric().getFileTotalCount())) { + System.setProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT, + properties.getMetric().getFileTotalCount()); + } + if (StringUtils.isEmpty(System.getProperty(SentinelConfig.COLD_FACTOR)) + && StringUtils.hasText(properties.getFlow().getColdFactor())) { + System.setProperty(SentinelConfig.COLD_FACTOR, + properties.getFlow().getColdFactor()); + } + + if (StringUtils.hasText(properties.getServlet().getBlockPage())) { + WebServletConfig.setBlockPage(properties.getServlet().getBlockPage()); + } + urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler); + urlCleanerOptional.ifPresent(WebCallbackManager::setUrlCleaner); + + InitExecutor.doInit(); + + // earlier initialize + if (properties.isEager()) { + NodeBuilder nodeBuilder = Env.nodeBuilder; + } + + } + + @Bean + @ConditionalOnMissingBean + public SentinelResourceAspect sentinelResourceAspect() { + return new SentinelResourceAspect(); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnClass(name = "org.springframework.web.client.RestTemplate") + public SentinelBeanPostProcessor sentinelBeanPostProcessor() { + return new SentinelBeanPostProcessor(); + } + + @Bean + @ConditionalOnMissingBean + public SentinelDataSourcePostProcessor sentinelDataSourcePostProcessor() { + return new SentinelDataSourcePostProcessor(); + } } From 6794c350efd7256b8770b001f6dd475a4bec20a3 Mon Sep 17 00:00:00 2001 From: xiejiashuai <707094980@qq.com> Date: Thu, 27 Sep 2018 13:33:29 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/sentinel/SentinelProperties.java | 42 ++++++++++++------- .../custom/SentinelAutoConfiguration.java | 9 ++-- .../SentinelAutoConfigurationTests.java | 3 +- 3 files changed, 31 insertions(+), 23 deletions(-) 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 3f91a3b0b5..bd71209570 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 @@ -22,6 +22,9 @@ import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.core.Ordered; +import com.alibaba.csp.sentinel.config.SentinelConfig; +import com.alibaba.csp.sentinel.transport.config.TransportConfig; + /** * @author xiaojing * @author hengyunabc @@ -31,44 +34,50 @@ public class SentinelProperties { /** - * 是否提前初始化心跳连接 + * earlier initialize heart-beat when the spring container starts when the + * transport dependency is on classpath ,the configuration is effective */ private boolean eager = false; /** - * Enable sentinel auto configure, the default value is true + * enable sentinel auto configure, the default value is true */ private boolean enabled = true; /** - * 字符编码集 + * charset when sentinel write or search metric file {@link SentinelConfig#CHARSET} */ private String charset = "UTF-8"; /** - * 通信相关配置 + * transport configuration about dashboard and client */ @NestedConfigurationProperty private Transport transport = new Transport(); /** - * 监控数据相关配置 + * metric configuration about resource */ @NestedConfigurationProperty private Metric metric = new Metric(); /** - * web 相关配置 + * web servlet configuration when the application is web ,the configuration is + * effective */ @NestedConfigurationProperty private Servlet servlet = new Servlet(); /** - * 限流相关 + * sentinel filter when the application is web ,the configuration is effective + * */ @NestedConfigurationProperty private Filter filter = new Filter(); + /** + * flow configuration + */ @NestedConfigurationProperty private Flow flow = new Flow(); @@ -139,7 +148,7 @@ public void setFilter(Filter filter) { public static class Flow { /** - * 限流冷启动因子 + * the cold factor {@link SentinelConfig#COLD_FACTOR} */ private String coldFactor = "3"; @@ -156,7 +165,7 @@ public void setColdFactor(String coldFactor) { public static class Servlet { /** - * url 限流后的处理页面 + * The process page when the flow control is triggered */ private String blockPage; @@ -172,12 +181,12 @@ public void setBlockPage(String blockPage) { public static class Metric { /** - * 监控数据写磁盘时单个文件的大小 + * the metric file size {@link SentinelConfig#SINGLE_METRIC_FILE_SIZE} */ private String fileSingleSize; /** - * 监控数据在磁盘上的总数量 + * the total metric file count {@link SentinelConfig#TOTAL_METRIC_FILE_COUNT} */ private String fileTotalCount; @@ -201,18 +210,19 @@ public void setFileTotalCount(String fileTotalCount) { public static class Transport { /** - * sentinel api port,default value is 8721 + * sentinel api port,default value is 8721 {@link TransportConfig#SERVER_PORT} */ private String port = "8721"; /** - * Sentinel dashboard address, won't try to connect dashboard when address is - * empty + * sentinel dashboard address, won't try to connect dashboard when address is + * empty {@link TransportConfig#CONSOLE_SERVER} */ private String dashboard = ""; /** - * 客户端和DashBord心跳发送时间 + * send heartbeat interval millisecond + * {@link TransportConfig#HEARTBEAT_INTERVAL_MS} */ private String heartbeatIntervalMs; @@ -245,7 +255,7 @@ public void setDashboard(String dashboard) { public static class Filter { /** - * Sentinel filter chain order. + * sentinel filter chain order. */ private int order = Ordered.HIGHEST_PRECEDENCE; diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java index ce0e7a9107..2f0ef6084e 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelAutoConfiguration.java @@ -32,7 +32,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; -import com.alibaba.csp.sentinel.Env; import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler; import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner; import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager; @@ -40,7 +39,6 @@ import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect; import com.alibaba.csp.sentinel.config.SentinelConfig; import com.alibaba.csp.sentinel.init.InitExecutor; -import com.alibaba.csp.sentinel.node.NodeBuilder; import com.alibaba.csp.sentinel.transport.config.TransportConfig; import com.alibaba.csp.sentinel.util.AppNameUtil; @@ -68,7 +66,8 @@ public class SentinelAutoConfiguration { @PostConstruct private void init() { - if (StringUtils.isEmpty(System.getProperty(AppNameUtil.APP_NAME))) { + if (StringUtils.isEmpty(System.getProperty(AppNameUtil.APP_NAME)) + && StringUtils.hasText(projectName)) { System.setProperty(AppNameUtil.APP_NAME, projectName); } if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT)) @@ -115,11 +114,9 @@ private void init() { urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler); urlCleanerOptional.ifPresent(WebCallbackManager::setUrlCleaner); - InitExecutor.doInit(); - // earlier initialize if (properties.isEager()) { - NodeBuilder nodeBuilder = Env.nodeBuilder; + InitExecutor.doInit(); } } diff --git a/spring-cloud-alibaba-sentinel/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java b/spring-cloud-alibaba-sentinel/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java index 521e7d7c9a..647fde936b 100644 --- a/spring-cloud-alibaba-sentinel/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java +++ b/spring-cloud-alibaba-sentinel/src/test/java/org/springframework/cloud/alibaba/sentinel/SentinelAutoConfigurationTests.java @@ -34,13 +34,14 @@ /** * @author fangjian + * @author jiashuai.xie */ public class SentinelAutoConfigurationTests { private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of(SentinelAutoConfiguration.class, SentinelWebAutoConfiguration.class, SentinelTestConfiguration.class)) - .withPropertyValues("spring.cloud.sentinel.port=8888") + .withPropertyValues("spring.cloud.sentinel.transport.port=8888") .withPropertyValues("spring.cloud.sentinel.filter.order=123") .withPropertyValues("spring.cloud.sentinel.filter.urlPatterns=/*,/test"); From 7c1699dcd82be6c5fc4cb947c6fe7f5aae7bb624 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Thu, 27 Sep 2018 14:32:08 +0800 Subject: [PATCH 07/17] update sentinel examples and metadata info to support new configurations of sentinel --- .../sentinel-core-example/readme-zh.md | 2 +- .../sentinel-core-example/readme.md | 2 +- .../src/main/resources/application.properties | 4 +- ...itional-spring-configuration-metadata.json | 45 ++++++++++++++++--- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md index 49d1e89891..a4b4d87acd 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md @@ -78,7 +78,7 @@ ``` spring.application.name=sentinel-example server.port=18083 - spring.cloud.sentinel.dashboard=localhost:8080 + spring.cloud.sentinel.transport.dashboard=localhost:8080 ``` 2. 启动应用,支持 IDE 直接启动和编译打包后启动。 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md index 86156b53a4..daaa3e8fb0 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md @@ -66,7 +66,7 @@ Before we start the demo, let's learn how to connect Sentinel to a Spring Cloud spring.application.name=sentinel-example server.port=18083 - spring.cloud.sentinel.dashboard=localhost:8080 + spring.cloud.sentinel.transport.dashboard=localhost:8080 2. Start the application in IDE or by building a fatjar. diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties index 8f8ade5515..2e6342de22 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties @@ -1,8 +1,8 @@ spring.application.name=sentinel-example server.port=18083 management.endpoints.web.exposure.include=* -spring.cloud.sentinel.port=8721 -spring.cloud.sentinel.dashboard=localhost:8080 +spring.cloud.sentinel.transport.port=8721 +spring.cloud.sentinel.transport.dashboard=localhost:8080 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 ea51f5e528..b3e40d0830 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 @@ -7,26 +7,59 @@ "description": "enable or disable sentinel auto configure." }, { - "name": "spring.cloud.sentinel.port", + "name": "spring.cloud.sentinel.eager", + "type": "java.lang.Boolean", + "defaultValue": false, + "description": "earlier initialize heart-beat when the spring container starts when the transport dependency is on classpath, the configuration is effective." + }, + { + "name": "spring.cloud.sentinel.charset", + "type": "java.lang.String", + "defaultValue": "UTF-8", + "description": "charset when sentinel write or search metric file." + }, + { + "name": "spring.cloud.sentinel.transport.port", "type": "java.lang.String", "defaultValue": "8721", "description": "sentinel api port." }, { - "name": "spring.cloud.sentinel.dashboard", + "name": "spring.cloud.sentinel.transport.dashboard", "type": "java.lang.String", "description": "sentinel dashboard address, won't try to connect dashboard when address is empty." }, + { + "name": "spring.cloud.sentinel.transport.heartbeatIntervalMs", + "type": "java.lang.String", + "description": "send heartbeat interval millisecond." + }, { "name": "spring.cloud.sentinel.filter.order", "type": "java.lang.Integer", "defaultValue": "Integer.MIN_VALUE", - "description": "Sentinel filter chain order, will be set to FilterRegistrationBean." + "description": "sentinel filter chain order, will be set to FilterRegistrationBean." }, { - "name": "spring.cloud.sentinel.filter.urlPatterns", - "type": "java.util.List", - "description": "URL pattern for Sentinel filter, default contains '/*'." + "name": "spring.cloud.sentinel.metric.fileSingleSize", + "type": "java.lang.String", + "description": "the metric file size." + }, + { + "name": "spring.cloud.sentinel.metric.fileTotalCount", + "type": "java.lang.String", + "description": "the total metric file count." + }, + { + "name": "spring.cloud.sentinel.servlet.blockPage", + "type": "java.lang.String", + "description": "the process page when the flow control is triggered." + }, + { + "name": "spring.cloud.sentinel.flow.coldFactor", + "type": "java.lang.String", + "defaultValue": "3", + "description": "sentinel the cold factor." } ] } From 8702fe00ae192629cbb1feea778f6e2547856b49 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Sun, 30 Sep 2018 11:01:48 +0800 Subject: [PATCH 08/17] refactor storage module: rename storage to oss --- README-zh.md | 2 +- README.md | 2 +- pom.xml | 2 +- spring-cloud-alibaba-dependencies/pom.xml | 6 +++--- .../{storage-example => oss-example}/pom.xml | 6 +++--- .../{storage-example => oss-example}/readme-zh.md | 6 +++--- .../{storage-example => oss-example}/readme.md | 6 +++--- .../cloud/alibaba/cloud/examples/OSSApplication.java | 0 .../cloud/alibaba/cloud/examples/OSSController.java | 0 .../src/main/resources/application.properties | 0 .../src/main/resources/oss-test.json | 0 spring-cloud-alibaba-examples/pom.xml | 2 +- .../pom.xml | 4 ++-- .../cloud/alibaba/oss}/OSSApplicationListener.java | 2 +- .../cloud/alibaba/oss}/OSSAutoConfiguration.java | 4 ++-- .../springframework/cloud/alibaba/oss}/OSSConstants.java | 2 +- .../springframework/cloud/alibaba/oss}/OSSProperties.java | 2 +- .../cloud/alibaba/oss}/endpoint/OSSEndpoint.java | 2 +- .../alibaba/oss}/endpoint/OSSEndpointAutoConfiguration.java | 2 +- .../alibaba/oss}/resource/OSSStorageProtocolResolver.java | 2 +- .../cloud/alibaba/oss}/resource/OSSStorageResource.java | 2 +- .../src/main/resources/META-INF/spring.factories | 5 +++++ .../cloud/alibaba/oss}/test/OSSAutoConfigurationTests.java | 6 +++--- .../oss}/test/OSSMultiClientAutoConfigurationTests.java | 6 +++--- .../src/main/resources/META-INF/spring.factories | 5 ----- spring-cloud-starter-alicloud/pom.xml | 2 +- .../pom.xml | 6 +++--- 27 files changed, 42 insertions(+), 42 deletions(-) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/pom.xml (88%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/readme-zh.md (98%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/readme.md (97%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java (100%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java (100%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/src/main/resources/application.properties (100%) rename spring-cloud-alibaba-examples/{storage-example => oss-example}/src/main/resources/oss-test.json (100%) rename {spring-cloud-alicloud-storage => spring-cloud-alicloud-oss}/pom.xml (94%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/OSSApplicationListener.java (96%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/OSSAutoConfiguration.java (93%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/OSSConstants.java (94%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/OSSProperties.java (98%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/endpoint/OSSEndpoint.java (97%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/endpoint/OSSEndpointAutoConfiguration.java (95%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/resource/OSSStorageProtocolResolver.java (97%) rename {spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss}/resource/OSSStorageResource.java (98%) create mode 100644 spring-cloud-alicloud-oss/src/main/resources/META-INF/spring.factories rename {spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss}/test/OSSAutoConfigurationTests.java (93%) rename {spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage => spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss}/test/OSSMultiClientAutoConfigurationTests.java (95%) delete mode 100644 spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories rename spring-cloud-starter-alicloud/{spring-cloud-starter-alicloud-storage => spring-cloud-starter-alicloud-oss}/pom.xml (79%) diff --git a/README-zh.md b/README-zh.md index 32b4098f1e..54a9cfa12b 100644 --- a/README-zh.md +++ b/README-zh.md @@ -48,7 +48,7 @@ Example 列表: [Nacos Discovery Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md) -[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/storage-example/readme-zh.md) +[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme-zh.md) ## 版本管理规范 项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从0开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用0,即版本号为 0.x.x 的格式。 diff --git a/README.md b/README.md index 0811db0af3..c0941db394 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Examples: [Nacos Discovery Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme.md) -[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/storage-example/readme.md) +[AliCloud OSS Example](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/oss-example/readme.md) ## Version control guidelines The version number of the project is in the form of x.x.x, where x is a number, starting from 0, and is not limited to the range 0~9. When the project is in the incubator phase, the first version number is fixed to 0, that is, the version number is 0.x.x. diff --git a/pom.xml b/pom.xml index f0f49e1d97..a8388a1ec8 100644 --- a/pom.xml +++ b/pom.xml @@ -81,7 +81,7 @@ spring-cloud-alibaba-test spring-cloud-starter-alibaba spring-cloud-starter-alicloud - spring-cloud-alicloud-storage + spring-cloud-alicloud-oss diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 3f32646a3e..88568164d0 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -81,7 +81,7 @@ - + com.aliyun.oss aliyun-sdk-oss @@ -97,7 +97,7 @@ org.springframework.cloud - spring-cloud-alicloud-storage + spring-cloud-alicloud-oss ${project.version} @@ -119,7 +119,7 @@ org.springframework.cloud - spring-cloud-starter-alicloud-storage + spring-cloud-starter-alicloud-oss ${project.version} diff --git a/spring-cloud-alibaba-examples/storage-example/pom.xml b/spring-cloud-alibaba-examples/oss-example/pom.xml similarity index 88% rename from spring-cloud-alibaba-examples/storage-example/pom.xml rename to spring-cloud-alibaba-examples/oss-example/pom.xml index c42de657d5..cfa08a1158 100644 --- a/spring-cloud-alibaba-examples/storage-example/pom.xml +++ b/spring-cloud-alibaba-examples/oss-example/pom.xml @@ -10,9 +10,9 @@ 4.0.0 - storage-example + oss-example jar - Example demonstrating how to use alicloud storage + Example demonstrating how to use alicloud oss @@ -22,7 +22,7 @@ org.springframework.cloud - spring-cloud-starter-alicloud-storage + spring-cloud-starter-alicloud-oss diff --git a/spring-cloud-alibaba-examples/storage-example/readme-zh.md b/spring-cloud-alibaba-examples/oss-example/readme-zh.md similarity index 98% rename from spring-cloud-alibaba-examples/storage-example/readme-zh.md rename to spring-cloud-alibaba-examples/oss-example/readme-zh.md index e287c761b4..56ac5cb68a 100644 --- a/spring-cloud-alibaba-examples/storage-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/oss-example/readme-zh.md @@ -1,4 +1,4 @@ -# Storage Example +# OSS Example ## 项目说明 @@ -13,11 +13,11 @@ **注意:本节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您只需修改 accessKeyId、secretAccessKey、region 即可。** -1. 修改 pom.xml 文件,引入 alicloud-storage starter。 +1. 修改 pom.xml 文件,引入 alicloud-oss starter。 org.springframework.cloud - spring-cloud-starter-alicloud-storage + spring-cloud-starter-alicloud-oss 2. 在配置文件中配置 OSS 服务对应的 accessKeyId、secretAccessKey 和 region。 diff --git a/spring-cloud-alibaba-examples/storage-example/readme.md b/spring-cloud-alibaba-examples/oss-example/readme.md similarity index 97% rename from spring-cloud-alibaba-examples/storage-example/readme.md rename to spring-cloud-alibaba-examples/oss-example/readme.md index 394ad207fd..17dfbbdc32 100644 --- a/spring-cloud-alibaba-examples/storage-example/readme.md +++ b/spring-cloud-alibaba-examples/oss-example/readme.md @@ -1,4 +1,4 @@ -# Storage Example +# OSS Example ## Introduction If your applications are Spring Cloud applications and you need to use Alibaba Cloud's OSS service for file storage (for example, storing commodity image for your e-commerce business), you can use OSS starter. This topic provides an example to illustrate how to use OSS starter to implement object storage for Spring Cloud applications. @@ -13,11 +13,11 @@ If your applications are Spring Cloud applications and you need to use Alibaba C Before we start the demo, let's learn how to connect OSS to a Spring Cloud application. **Note: This section is to show you how to connect to oss. The actual configurations have been completed in the following example, and you only need to specify your accessKeyId, secretAccessKey and region.** -1. Add dependency spring-cloud-starter-alicloud-storage in the pom.xml file in your Spring Cloud project. +1. Add dependency spring-cloud-starter-alicloud-oss in the pom.xml file in your Spring Cloud project. org.springframework.cloud - spring-cloud-starter-alicloud-storage + spring-cloud-starter-alicloud-oss 2. Configure accessKeyId, secretAccessKey and region in application.properties. diff --git a/spring-cloud-alibaba-examples/storage-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java similarity index 100% rename from spring-cloud-alibaba-examples/storage-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java rename to spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java diff --git a/spring-cloud-alibaba-examples/storage-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java similarity index 100% rename from spring-cloud-alibaba-examples/storage-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java rename to spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java diff --git a/spring-cloud-alibaba-examples/storage-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties similarity index 100% rename from spring-cloud-alibaba-examples/storage-example/src/main/resources/application.properties rename to spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties diff --git a/spring-cloud-alibaba-examples/storage-example/src/main/resources/oss-test.json b/spring-cloud-alibaba-examples/oss-example/src/main/resources/oss-test.json similarity index 100% rename from spring-cloud-alibaba-examples/storage-example/src/main/resources/oss-test.json rename to spring-cloud-alibaba-examples/oss-example/src/main/resources/oss-test.json diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index e4c9fa1553..ed4acb014f 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -22,7 +22,7 @@ sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api nacos-example/nacos-discovery-example nacos-example/nacos-config-example - storage-example + oss-example diff --git a/spring-cloud-alicloud-storage/pom.xml b/spring-cloud-alicloud-oss/pom.xml similarity index 94% rename from spring-cloud-alicloud-storage/pom.xml rename to spring-cloud-alicloud-oss/pom.xml index 8a7ede0882..d486d2c022 100644 --- a/spring-cloud-alicloud-storage/pom.xml +++ b/spring-cloud-alicloud-oss/pom.xml @@ -10,8 +10,8 @@ 4.0.0 org.springframework.cloud - spring-cloud-alicloud-storage - Spring Cloud Alibaba Cloud Storage + spring-cloud-alicloud-oss + Spring Cloud Alibaba Cloud OSS diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSApplicationListener.java similarity index 96% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSApplicationListener.java index e5e56de7d6..d29039b04b 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSApplicationListener.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSApplicationListener.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage; +package org.springframework.cloud.alibaba.oss; import java.util.Map; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSAutoConfiguration.java similarity index 93% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSAutoConfiguration.java index 9ab78b03f8..194933c35d 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSAutoConfiguration.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage; +package org.springframework.cloud.alibaba.oss; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.alibaba.storage.resource.OSSStorageProtocolResolver; +import org.springframework.cloud.alibaba.oss.resource.OSSStorageProtocolResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSConstants.java similarity index 94% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSConstants.java index 7bf76938db..4f0587923e 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSConstants.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSConstants.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage; +package org.springframework.cloud.alibaba.oss; /** * OSS constants diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java similarity index 98% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java index cd39077ef9..323c1754ac 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/OSSProperties.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage; +package org.springframework.cloud.alibaba.oss; import java.util.Arrays; import java.util.HashMap; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java similarity index 97% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java index 02a89b588f..d417a858a6 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpoint.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.endpoint; +package org.springframework.cloud.alibaba.oss.endpoint; import java.util.ArrayList; import java.util.HashMap; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpointAutoConfiguration.java similarity index 95% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpointAutoConfiguration.java index e764d2c4ba..c056d58649 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/endpoint/OSSEndpointAutoConfiguration.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpointAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.endpoint; +package org.springframework.cloud.alibaba.oss.endpoint; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageProtocolResolver.java similarity index 97% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageProtocolResolver.java index bd46ee0b5e..159f2c49e5 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageProtocolResolver.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageProtocolResolver.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.resource; +package org.springframework.cloud.alibaba.oss.resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageResource.java similarity index 98% rename from spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java rename to spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageResource.java index 30f48b2351..08ef10aa8d 100644 --- a/spring-cloud-alicloud-storage/src/main/java/org/springframework/cloud/alibaba/storage/resource/OSSStorageResource.java +++ b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageResource.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.resource; +package org.springframework.cloud.alibaba.oss.resource; import java.io.File; import java.io.FileNotFoundException; diff --git a/spring-cloud-alicloud-oss/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-oss/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..4f71c2da2d --- /dev/null +++ b/spring-cloud-alicloud-oss/src/main/resources/META-INF/spring.factories @@ -0,0 +1,5 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.springframework.cloud.alibaba.oss.OSSAutoConfiguration,\ +org.springframework.cloud.alibaba.oss.endpoint.OSSEndpointAutoConfiguration +org.springframework.context.ApplicationListener=\ +org.springframework.cloud.alibaba.oss.OSSApplicationListener \ No newline at end of file diff --git a/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java b/spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSAutoConfigurationTests.java similarity index 93% rename from spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java rename to spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSAutoConfigurationTests.java index a87e0af1f6..96a1455359 100644 --- a/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSAutoConfigurationTests.java +++ b/spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSAutoConfigurationTests.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.test; +package org.springframework.cloud.alibaba.oss.test; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.cloud.alibaba.storage.OSSAutoConfiguration; -import org.springframework.cloud.alibaba.storage.OSSProperties; +import org.springframework.cloud.alibaba.oss.OSSAutoConfiguration; +import org.springframework.cloud.alibaba.oss.OSSProperties; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClient; diff --git a/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java b/spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSMultiClientAutoConfigurationTests.java similarity index 95% rename from spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java rename to spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSMultiClientAutoConfigurationTests.java index b0caf0196a..1af1f2853f 100644 --- a/spring-cloud-alicloud-storage/src/test/java/org/springframework/cloud/alibaba/storage/test/OSSMultiClientAutoConfigurationTests.java +++ b/spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/test/OSSMultiClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.alibaba.storage.test; +package org.springframework.cloud.alibaba.oss.test; import static org.assertj.core.api.Assertions.assertThat; @@ -23,8 +23,8 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.cloud.alibaba.storage.OSSAutoConfiguration; -import org.springframework.cloud.alibaba.storage.OSSProperties; +import org.springframework.cloud.alibaba.oss.OSSAutoConfiguration; +import org.springframework.cloud.alibaba.oss.OSSProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories b/spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 9945ef8305..0000000000 --- a/spring-cloud-alicloud-storage/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,5 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.springframework.cloud.alibaba.storage.OSSAutoConfiguration,\ -org.springframework.cloud.alibaba.storage.endpoint.OSSEndpointAutoConfiguration -org.springframework.context.ApplicationListener=\ -org.springframework.cloud.alibaba.storage.OSSApplicationListener \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml index 4996874168..f44393a4c1 100644 --- a/spring-cloud-starter-alicloud/pom.xml +++ b/spring-cloud-starter-alicloud/pom.xml @@ -11,6 +11,6 @@ Spring Cloud Alibaba Cloud Starters Spring Cloud Alibaba Cloud Starters - spring-cloud-starter-alicloud-storage + spring-cloud-starter-alicloud-oss \ No newline at end of file diff --git a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml similarity index 79% rename from spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml rename to spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml index 6e7a31788b..e52d227280 100644 --- a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-storage/pom.xml +++ b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml @@ -7,13 +7,13 @@ spring-cloud-starter-alicloud 0.2.0.BUILD-SNAPSHOT - spring-cloud-starter-alicloud-storage - Spring Cloud Starter Alibaba Cloud Storage + spring-cloud-starter-alicloud-oss + Spring Cloud Starter Alibaba Cloud OSS org.springframework.cloud - spring-cloud-alicloud-storage + spring-cloud-alicloud-oss com.aliyun.oss From 8a0c087415d75084324c56d2bd0619df50085071 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Sun, 30 Sep 2018 11:21:29 +0800 Subject: [PATCH 09/17] update nacos version to 0.2.1 --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 88568164d0..2ff41fded1 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -18,7 +18,7 @@ 0.1.1 3.1.0 - 0.2.1-RC1 + 0.2.1 From 52a0c6f9de45be899e4cda8911e7cfb8bfd85e42 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Mon, 8 Oct 2018 20:29:39 +0800 Subject: [PATCH 10/17] update version to 0.2.0 --- pom.xml | 2 +- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../nacos-example/nacos-config-example/pom.xml | 2 +- .../nacos-discovery-consumer-example/pom.xml | 2 +- .../nacos-discovery-provider-example/pom.xml | 2 +- .../nacos-example/nacos-discovery-example/pom.xml | 2 +- spring-cloud-alibaba-examples/oss-example/pom.xml | 2 +- spring-cloud-alibaba-examples/pom.xml | 2 +- .../sentinel-example/sentinel-core-example/pom.xml | 2 +- .../sentinel-dubbo-example/sentinel-dubbo-api/pom.xml | 2 +- .../sentinel-dubbo-consumer-example/pom.xml | 2 +- .../sentinel-dubbo-provider-example/pom.xml | 2 +- spring-cloud-alibaba-nacos-config/pom.xml | 2 +- spring-cloud-alibaba-nacos-discovery/pom.xml | 2 +- spring-cloud-alibaba-sentinel/pom.xml | 2 +- spring-cloud-alibaba-test/core-support/pom.xml | 2 +- spring-cloud-alibaba-test/pom.xml | 2 +- spring-cloud-alibaba-test/sentinel-test-support/pom.xml | 2 +- spring-cloud-alicloud-oss/pom.xml | 2 +- spring-cloud-starter-alibaba/pom.xml | 2 +- .../spring-cloud-starter-alibaba-nacos-config/pom.xml | 2 +- .../spring-cloud-starter-alibaba-nacos-discovery/pom.xml | 2 +- .../spring-cloud-starter-alibaba-sentinel/pom.xml | 2 +- spring-cloud-starter-alicloud/pom.xml | 2 +- .../spring-cloud-starter-alicloud-oss/pom.xml | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index a8388a1ec8..1353ad3e77 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 pom Spring Cloud Alibaba diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 2ff41fded1..058625b516 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -10,7 +10,7 @@ spring-cloud-alibaba-dependencies - 0.2.0.BUILD-SNAPSHOT + 0.2.0 pom Spring Cloud Alibaba Dependencies Spring Cloud Alibaba Dependencies diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml index f7cedc41a2..a011d829a4 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml index ec343d5c50..65fbbfb0d3 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud nacos-discovery-example - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/pom.xml index 294a44b948..c2e5952aa4 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud nacos-discovery-example - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml index e56d92d4a9..d4041f6694 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-examples/oss-example/pom.xml b/spring-cloud-alibaba-examples/oss-example/pom.xml index cfa08a1158..33442b3add 100644 --- a/spring-cloud-alibaba-examples/oss-example/pom.xml +++ b/spring-cloud-alibaba-examples/oss-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index ed4acb014f..f02eadbb36 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml index ec35b244dc..314ee8f828 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api/pom.xml index 24cde890d0..6c989f5dad 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-consumer-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-consumer-example/pom.xml index 890656ea8f..ba88981a09 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-consumer-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-consumer-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-provider-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-provider-example/pom.xml index 87adbbaf72..c59f4ba61c 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-provider-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-dubbo-example/sentinel-dubbo-provider-example/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-examples - 0.2.0.BUILD-SNAPSHOT + 0.2.0 ../../../pom.xml 4.0.0 diff --git a/spring-cloud-alibaba-nacos-config/pom.xml b/spring-cloud-alibaba-nacos-config/pom.xml index 12ff873c1a..6bbc121731 100644 --- a/spring-cloud-alibaba-nacos-config/pom.xml +++ b/spring-cloud-alibaba-nacos-config/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-nacos-discovery/pom.xml b/spring-cloud-alibaba-nacos-discovery/pom.xml index 3c6bd31af4..e0aaa47d13 100644 --- a/spring-cloud-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-alibaba-nacos-discovery/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-sentinel/pom.xml b/spring-cloud-alibaba-sentinel/pom.xml index 1ac5ef319b..74b58421be 100644 --- a/spring-cloud-alibaba-sentinel/pom.xml +++ b/spring-cloud-alibaba-sentinel/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-test/core-support/pom.xml b/spring-cloud-alibaba-test/core-support/pom.xml index 26712634f4..72d30a9882 100644 --- a/spring-cloud-alibaba-test/core-support/pom.xml +++ b/spring-cloud-alibaba-test/core-support/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-test - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-test/pom.xml b/spring-cloud-alibaba-test/pom.xml index 289cc1bb2c..1261226d7a 100644 --- a/spring-cloud-alibaba-test/pom.xml +++ b/spring-cloud-alibaba-test/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alibaba-test/sentinel-test-support/pom.xml b/spring-cloud-alibaba-test/sentinel-test-support/pom.xml index 3a7b21dc7a..9197c5f822 100644 --- a/spring-cloud-alibaba-test/sentinel-test-support/pom.xml +++ b/spring-cloud-alibaba-test/sentinel-test-support/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba-test - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-alicloud-oss/pom.xml b/spring-cloud-alicloud-oss/pom.xml index d486d2c022..09e1145409 100644 --- a/spring-cloud-alicloud-oss/pom.xml +++ b/spring-cloud-alicloud-oss/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 4.0.0 diff --git a/spring-cloud-starter-alibaba/pom.xml b/spring-cloud-starter-alibaba/pom.xml index 877646ae2b..303e785f74 100644 --- a/spring-cloud-starter-alibaba/pom.xml +++ b/spring-cloud-starter-alibaba/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alibaba pom diff --git a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config/pom.xml b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config/pom.xml index 2befd40c87..60c0e4891c 100644 --- a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config/pom.xml +++ b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-config/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-starter-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alibaba-nacos-config Spring Cloud Starter Alibaba Nacos Config diff --git a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-discovery/pom.xml b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-discovery/pom.xml index 2ce41a2fd2..08bcf547d8 100644 --- a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-nacos-discovery/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-starter-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alibaba-nacos-discovery Spring Cloud Starter Alibaba Nacos Discovery diff --git a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-sentinel/pom.xml b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-sentinel/pom.xml index 70300f790c..32aab630f2 100644 --- a/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-sentinel/pom.xml +++ b/spring-cloud-starter-alibaba/spring-cloud-starter-alibaba-sentinel/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-starter-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alibaba-sentinel Spring Cloud Starter Alibaba Sentinel diff --git a/spring-cloud-starter-alicloud/pom.xml b/spring-cloud-starter-alicloud/pom.xml index f44393a4c1..a28fc12b46 100644 --- a/spring-cloud-starter-alicloud/pom.xml +++ b/spring-cloud-starter-alicloud/pom.xml @@ -4,7 +4,7 @@ org.springframework.cloud spring-cloud-alibaba - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alicloud pom diff --git a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml index e52d227280..74ed72f338 100644 --- a/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml +++ b/spring-cloud-starter-alicloud/spring-cloud-starter-alicloud-oss/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-starter-alicloud - 0.2.0.BUILD-SNAPSHOT + 0.2.0 spring-cloud-starter-alicloud-oss Spring Cloud Starter Alibaba Cloud OSS From 7aae27231836d5d9df46a02bb1594f77fa573e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=A6=E7=9B=8F?= Date: Tue, 9 Oct 2018 20:29:45 +0800 Subject: [PATCH 11/17] Fixes #32 support fileExtension yaml and yml --- .../client/NacosPropertySourceBuilder.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceBuilder.java b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceBuilder.java index 6fb8ffa978..4e5d63b672 100644 --- a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceBuilder.java +++ b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceBuilder.java @@ -28,6 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; +import org.springframework.core.io.ByteArrayResource; import org.springframework.util.StringUtils; /** @@ -83,11 +85,22 @@ private Properties loadNacosData(String dataId, String group, String fileExtensi data = configService.getConfig(dataId, group, timeout); // todo add content type yaml support if (!StringUtils.isEmpty(data)) { - Properties properties = new Properties(); logger.info(String.format("Loading nacos data, dataId: '%s', group: '%s'", dataId, group)); - properties.load(new StringReader(data)); - return properties; + + if (fileExtension.equalsIgnoreCase("properties")) { + Properties properties = new Properties(); + + properties.load(new StringReader(data)); + return properties; + } + else if (fileExtension.equalsIgnoreCase("yaml") + || fileExtension.equalsIgnoreCase("yml")) { + YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); + yamlFactory.setResources(new ByteArrayResource(data.getBytes())); + return yamlFactory.getObject(); + } + } } catch (NacosException e) { From 7fdd8fa3e203f5d640dd105986dac392e7f12833 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Thu, 11 Oct 2018 21:48:35 +0800 Subject: [PATCH 12/17] update sentinel version to 0.2.0 --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../examples/JsonFlowRuleListParser.java | 9 +++++---- .../cloud/examples/ServiceApplication.java | 4 ++-- .../sentinel/datasource/DataSourceLoader.java | 20 +++++++++---------- .../SentinelDataSourcePostProcessor.java | 10 +++++----- .../ApolloDataSourceFactoryBean.java | 14 ++++++------- .../FileRefreshableDataSourceFactoryBean.java | 14 ++++++------- .../NacosDataSourceFactoryBean.java | 14 ++++++------- .../ZookeeperDataSourceFactoryBean.java | 20 +++++++++---------- 9 files changed, 54 insertions(+), 53 deletions(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 058625b516..167f71e9dc 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -16,7 +16,7 @@ Spring Cloud Alibaba Dependencies - 0.1.1 + 0.2.0 3.1.0 0.2.1 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/JsonFlowRuleListParser.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/JsonFlowRuleListParser.java index 255eb78920..b205c96c5d 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/JsonFlowRuleListParser.java +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/JsonFlowRuleListParser.java @@ -2,7 +2,7 @@ import java.util.List; -import com.alibaba.csp.sentinel.datasource.ConfigParser; +import com.alibaba.csp.sentinel.datasource.Converter; import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; @@ -10,9 +10,10 @@ /** * @author fangjian */ -public class JsonFlowRuleListParser implements ConfigParser> { +public class JsonFlowRuleListParser implements Converter> { @Override - public List parse(String source) { - return JSON.parseObject(source, new TypeReference>() {}); + public List convert(String source) { + return JSON.parseObject(source, new TypeReference>() { + }); } } diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java index 0dccda2f85..fe00e033e5 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java @@ -1,6 +1,6 @@ package org.springframework.cloud.alibaba.cloud.examples; -import com.alibaba.csp.sentinel.datasource.ConfigParser; +import com.alibaba.csp.sentinel.datasource.Converter; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.alibaba.sentinel.annotation.SentinelProtect; @@ -25,7 +25,7 @@ public RestTemplate restTemplate2() { } @Bean - public ConfigParser myParser() { + public Converter myParser() { return new JsonFlowRuleListParser(); } diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/DataSourceLoader.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/DataSourceLoader.java index 7ac89dfc98..0687176607 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/DataSourceLoader.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/DataSourceLoader.java @@ -34,10 +34,10 @@ import org.springframework.util.Assert; import org.springframework.util.ClassUtils; -import com.alibaba.csp.sentinel.datasource.DataSource; +import com.alibaba.csp.sentinel.datasource.ReadableDataSource; /** - * {@link DataSource} Loader + * {@link ReadableDataSource} Loader * * @author fangjian */ @@ -50,20 +50,20 @@ public class DataSourceLoader { private final static String ALL_PROPERTIES_RESOURCES_LOCATION = CLASSPATH_ALL_URL_PREFIX + PROPERTIES_RESOURCE_LOCATION; - private final static ConcurrentMap> dataSourceClassesCache = new ConcurrentHashMap>( + private final static ConcurrentMap> dataSourceClassesCache = new ConcurrentHashMap>( 4); static void loadAllDataSourceClassesCache() { - Map> dataSourceClassesMap = loadAllDataSourceClassesCache( + Map> dataSourceClassesMap = loadAllDataSourceClassesCache( ALL_PROPERTIES_RESOURCES_LOCATION); dataSourceClassesCache.putAll(dataSourceClassesMap); } - static Map> loadAllDataSourceClassesCache( + static Map> loadAllDataSourceClassesCache( String resourcesLocation) { - Map> dataSourcesMap = new HashMap>( + Map> dataSourcesMap = new HashMap>( 4); ClassLoader classLoader = DataSourceLoader.class.getClassLoader(); @@ -102,10 +102,10 @@ static Map> loadAllDataSourceClassesCache( Class dataSourceClass = ClassUtils.resolveClassName(className, classLoader); - Assert.isAssignable(DataSource.class, dataSourceClass); + Assert.isAssignable(ReadableDataSource.class, dataSourceClass); dataSourcesMap.put(type, - (Class) dataSourceClass); + (Class) dataSourceClass); if (logger.isDebugEnabled()) { logger.debug("Sentinel DataSource implementation [ type : " @@ -126,10 +126,10 @@ static Map> loadAllDataSourceClassesCache( return dataSourcesMap; } - public static Class loadClass(String type) + public static Class loadClass(String type) throws IllegalArgumentException { - Class dataSourceClass = dataSourceClassesCache.get(type); + Class dataSourceClass = dataSourceClassesCache.get(type); if (dataSourceClass == null) { if (dataSourceClassesCache.isEmpty()) { diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java index 05914b7d25..7f81899a49 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java @@ -44,20 +44,20 @@ import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; -import com.alibaba.csp.sentinel.datasource.ConfigParser; +import com.alibaba.csp.sentinel.datasource.Converter; /** * {@link SentinelDataSource @SentinelDataSource} Post Processor * * @author fangjian - * @see com.alibaba.csp.sentinel.datasource.DataSource + * @see com.alibaba.csp.sentinel.datasource.ReadableDataSource * @see SentinelDataSource */ public class SentinelDataSourcePostProcessor extends InstantiationAwareBeanPostProcessorAdapter implements MergedBeanDefinitionPostProcessor { - private static final Logger logger = LoggerFactory + private static final Logger logger = LoggerFactory .getLogger(SentinelDataSourcePostProcessor.class); @Autowired @@ -170,8 +170,8 @@ private void registerDataSource(String beanName, Class targetClass, for (String propertyName : propertyMap.keySet()) { Field field = ReflectionUtils.findField(targetClass, propertyName); if (field != null) { - if (field.getType().isAssignableFrom(ConfigParser.class)) { - // ConfigParser get from ApplicationContext + if (field.getType().isAssignableFrom(Converter.class)) { + // Converter get from ApplicationContext builder.addPropertyReference(propertyName, propertyMap.get(propertyName).toString()); } diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ApolloDataSourceFactoryBean.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ApolloDataSourceFactoryBean.java index 48458f82be..09b39bb445 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ApolloDataSourceFactoryBean.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ApolloDataSourceFactoryBean.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.FactoryBean; -import com.alibaba.csp.sentinel.datasource.ConfigParser; +import com.alibaba.csp.sentinel.datasource.Converter; import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource; /** @@ -14,12 +14,12 @@ public class ApolloDataSourceFactoryBean implements FactoryBean private String serverAddr; private String groupId; private String dataId; - private ConfigParser configParser; + private Converter converter; @Override public NacosDataSource getObject() throws Exception { - return new NacosDataSource(serverAddr, groupId, dataId, configParser); + return new NacosDataSource(serverAddr, groupId, dataId, converter); } @Override @@ -50,11 +50,11 @@ public void setDataId(String dataId) { this.dataId = dataId; } - public ConfigParser getConfigParser() { - return configParser; + public Converter getConverter() { + return converter; } - public void setConfigParser(ConfigParser configParser) { - this.configParser = configParser; + public void setConverter(Converter Converter) { + this.converter = Converter; } } diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ZookeeperDataSourceFactoryBean.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ZookeeperDataSourceFactoryBean.java index b0ea5aaa0f..aa10270a7a 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ZookeeperDataSourceFactoryBean.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/ZookeeperDataSourceFactoryBean.java @@ -3,7 +3,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.FactoryBean; -import com.alibaba.csp.sentinel.datasource.ConfigParser; +import com.alibaba.csp.sentinel.datasource.Converter; import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource; /** @@ -19,17 +19,17 @@ public class ZookeeperDataSourceFactoryBean implements FactoryBean Date: Tue, 16 Oct 2018 15:39:23 +0800 Subject: [PATCH 13/17] add management info to registry metadata --- .../nacos/registry/NacosRegistration.java | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java index 10620415d9..4d923facf4 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java @@ -20,8 +20,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.ManagementServerPortUtils; import org.springframework.cloud.client.serviceregistry.Registration; +import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; +import org.springframework.util.StringUtils; import java.net.URI; import java.util.Map; @@ -40,17 +43,23 @@ */ public class NacosRegistration implements Registration, ServiceInstance { + private static final String MANAGEMENT_PORT = "management.port"; + private static final String MANAGEMENT_CONTEXT_PATH = "management.context-path"; + private static final String MANAGEMENT_ADDRESS = "management.address"; + @Autowired private NacosDiscoveryProperties nacosDiscoveryProperties; - private NamingService nacosNamingService; - @Autowired - private Environment environment; + private ApplicationContext context; + + private NamingService nacosNamingService; @PostConstruct public void init() { - nacosDiscoveryProperties.overrideFromEnv(environment); + + Environment env = context.getEnvironment(); + nacosDiscoveryProperties.overrideFromEnv(context.getEnvironment()); Properties properties = new Properties(); properties.put(SERVER_ADDR, nacosDiscoveryProperties.getServerAddr()); @@ -67,6 +76,21 @@ public void init() { catch (Exception e) { } + + Integer managementPort = ManagementServerPortUtils.getPort(context); + if (null != managementPort) { + Map metadata = nacosDiscoveryProperties.getMetadata(); + metadata.put(MANAGEMENT_PORT, managementPort.toString()); + String contextPath = env + .getProperty("management.server.servlet.context-path"); + String address = env.getProperty("management.server.address"); + if (!StringUtils.isEmpty(contextPath)) { + metadata.put(MANAGEMENT_CONTEXT_PATH, contextPath); + } + if (!StringUtils.isEmpty(address)) { + metadata.put(MANAGEMENT_ADDRESS, address); + } + } } @Override @@ -85,9 +109,7 @@ public int getPort() { } public void setPort(int port) { - if (nacosDiscoveryProperties.getPort() < 0) { - this.nacosDiscoveryProperties.setPort(port); - } + this.nacosDiscoveryProperties.setPort(port); } @Override From 4829157c09ada4aed3db095eebc4c88002b70019 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Tue, 16 Oct 2018 16:39:47 +0800 Subject: [PATCH 14/17] update comments and docs --- .../sentinel-core-example/readme-zh.md | 6 +-- .../sentinel-core-example/readme.md | 6 +-- .../annotation/SentinelDataSource.java | 22 +++++--- .../SentinelDataSourceRegistry.java | 50 ++++++++++--------- 4 files changed, 46 insertions(+), 38 deletions(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md index a4b4d87acd..47b4a51dc2 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md @@ -204,7 +204,7 @@ Sentinel starter 整合了目前存在的几类 DataSource。只需要在配置 spring.cloud.sentinel.datasource.recommendRefreshMs=2000 spring.cloud.sentinel.datasource.bufSize=2048 spring.cloud.sentinel.datasource.charset=utf-8 - spring.cloud.sentinel.datasource.configParser=myParser + spring.cloud.sentinel.datasource.converter=myParser spring.cloud.sentinel.datasource.file=/Users/you/rule.json 然后使用`@SentinelDataSource` 注解修饰 DataSource 即可注入: @@ -220,7 +220,7 @@ Sentinel starter 整合了目前存在的几类 DataSource。只需要在配置 `spring.cloud.sentinel.datasource.recommendRefreshMs` 里的 `recommendRefreshMs` 对应相关 DataSource 的属性。 -`spring.cloud.sentinel.datasource.configParser`代表 `ConfigParser` 在 Spring 容器里的 name。如果没找到,会抛出异常。 +`spring.cloud.sentinel.datasource.converter`代表 `Converter` 在 Spring 容器里的 name。如果没找到,会抛出异常。 type目前支持file, nacos, zk, apollo。 @@ -260,7 +260,7 @@ type目前支持file, nacos, zk, apollo。 spring.cloud.sentinel.datasource.fieldA = valueA spring.cloud.sentinel.datasource.fieldB = valueB - 注意:由于目前Sentinel的AbstractDataSource需要有个ConfigParser作为构造函数中的参数,并且它的子类的构造都是通过多个参数的构造函数构造的。 + 注意:由于目前Sentinel的AbstractDataSource需要有个Converter作为构造函数中的参数,并且它的子类的构造都是通过多个参数的构造函数构造的。 所以目前所有的Sentinel starter中的DataSource都是基于FactoryBean并且通过设置属性构造的。如果有这方面的需求,需要再多加一个registerFactoryBean过程。 SentinelDataSourceRegistry.registerFactoryBean("custeom", CustomDataSourceFactoryBean.class); diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md index daaa3e8fb0..8d838ebcd3 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md @@ -177,7 +177,7 @@ If you want to define FileRefreshableDataSource: spring.cloud.sentinel.datasource.recommendRefreshMs=2000 spring.cloud.sentinel.datasource.bufSize=2048 spring.cloud.sentinel.datasource.charset=utf-8 - spring.cloud.sentinel.datasource.configParser=myParser + spring.cloud.sentinel.datasource.converter=myParser spring.cloud.sentinel.datasource.file=/Users/you/rule.json then use `@SentinelDataSource` to annotate DataSource: @@ -191,7 +191,7 @@ spring.cloud.sentinel.datasource.type means the type of DataSource. spring.cloud.sentinel.datasource.recommendRefreshMs means the recommendRefreshMs property of specified DataSource. -spring.cloud.sentinel.datasource.configParser means the name of spring bean that type is ConfigParser. If the bean is not exists, will throw exception. +spring.cloud.sentinel.datasource.converter means the name of spring bean that type is Converter. If the bean is not exists, will throw exception. Now datasource type support 4 categories: file, nacos, zk, apollo. @@ -230,7 +230,7 @@ User-defined DataSource need 2 steps. spring.cloud.sentinel.datasource.fieldA = valueA spring.cloud.sentinel.datasource.fieldB = valueB -Note: The AbstractDataSource of Sentinel need a ConfigParser as a constructor param and the subclass of AbstractDataSource was construct by multi-param constructor. +Note: The AbstractDataSource of Sentinel need a Converter as a constructor param and the subclass of AbstractDataSource was construct by multi-param constructor. Now All DataSources in starter was construct by FactoryBean. If you want to do it in this way, you should register FactoryBean by SentinelDataSourceRegistry. SentinelDataSourceRegistry.registerFactoryBean("custeom", CustomDataSourceFactoryBean.class); diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/annotation/SentinelDataSource.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/annotation/SentinelDataSource.java index ef09eb0efc..93ef1bdb97 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/annotation/SentinelDataSource.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/annotation/SentinelDataSource.java @@ -16,28 +16,34 @@ package org.springframework.cloud.alibaba.sentinel.annotation; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import com.alibaba.csp.sentinel.datasource.ReadableDataSource; import org.springframework.core.annotation.AliasFor; /** - * An annotation to inject {@link com.alibaba.csp.sentinel.datasource.DataSource} instance + * An annotation to inject {@link ReadableDataSource} instance * into a Spring Bean. The Properties of DataSource bean get from config files with * specific prefix. * * @author fangjian - * @see com.alibaba.csp.sentinel.datasource.DataSource + * @see ReadableDataSource */ -@Target({ ElementType.FIELD }) +@Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface SentinelDataSource { - @AliasFor("prefix") - String value() default ""; + @AliasFor("prefix") + String value() default ""; - @AliasFor("value") - String prefix() default ""; + @AliasFor("value") + String prefix() default ""; String name() default ""; // spring bean name diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourceRegistry.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourceRegistry.java index 9bd92eee56..ceb90ee1fd 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourceRegistry.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourceRegistry.java @@ -18,6 +18,8 @@ import java.util.concurrent.ConcurrentHashMap; +import com.alibaba.csp.sentinel.datasource.ReadableDataSource; + import org.springframework.beans.factory.FactoryBean; import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.ApolloDataSourceFactoryBean; import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.FileRefreshableDataSourceFactoryBean; @@ -28,7 +30,7 @@ * Registry to save DataSource FactoryBean * * @author fangjian - * @see com.alibaba.csp.sentinel.datasource.DataSource + * @see ReadableDataSource * @see FileRefreshableDataSourceFactoryBean * @see ZookeeperDataSourceFactoryBean * @see NacosDataSourceFactoryBean @@ -36,32 +38,32 @@ */ public class SentinelDataSourceRegistry { - private static ConcurrentHashMap> cache = new ConcurrentHashMap<>( - 32); + private static ConcurrentHashMap> cache = new ConcurrentHashMap<>( + 32); - static { - SentinelDataSourceRegistry.registerFactoryBean("file", - FileRefreshableDataSourceFactoryBean.class); - SentinelDataSourceRegistry.registerFactoryBean("zk", - ZookeeperDataSourceFactoryBean.class); - SentinelDataSourceRegistry.registerFactoryBean("nacos", - NacosDataSourceFactoryBean.class); - SentinelDataSourceRegistry.registerFactoryBean("apollo", - ApolloDataSourceFactoryBean.class); - } + static { + SentinelDataSourceRegistry.registerFactoryBean("file", + FileRefreshableDataSourceFactoryBean.class); + SentinelDataSourceRegistry.registerFactoryBean("zk", + ZookeeperDataSourceFactoryBean.class); + SentinelDataSourceRegistry.registerFactoryBean("nacos", + NacosDataSourceFactoryBean.class); + SentinelDataSourceRegistry.registerFactoryBean("apollo", + ApolloDataSourceFactoryBean.class); + } - public static synchronized void registerFactoryBean(String alias, - Class clazz) { - cache.putIfAbsent(alias, clazz); - cache.put(alias, clazz); - } + public static synchronized void registerFactoryBean(String alias, + Class clazz) { + cache.putIfAbsent(alias, clazz); + cache.put(alias, clazz); + } - public static Class getFactoryBean(String alias) { - return cache.get(alias); - } + public static Class getFactoryBean(String alias) { + return cache.get(alias); + } - public static boolean checkFactoryBean(String alias) { - return cache.containsKey(alias); - } + public static boolean checkFactoryBean(String alias) { + return cache.containsKey(alias); + } } From 568da97adfd946dce32a44cbdffa70aa6bb3672c Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Wed, 17 Oct 2018 11:05:43 +0800 Subject: [PATCH 15/17] Fixes #43 add rules automation --- .../sentinel-core-example/readme-zh.md | 8 +-- .../sentinel-core-example/readme.md | 8 +-- .../SentinelDataSourcePostProcessor.java | 49 ++++++++++++++++++- 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md index 47b4a51dc2..4c0b2aeba3 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md @@ -192,9 +192,9 @@ Sentinel 控制台支持实时监控查看,您可以通过 Sentinel 控制台

-## DataSource 支持 +## ReadableDataSource 支持 -Sentinel 内部提供了[动态规则的扩展实现 DataSource](https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95#datasource-%E6%89%A9%E5%B1%95)。 +Sentinel 内部提供了[动态规则的扩展实现 ReadableDataSource](https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95#datasource-%E6%89%A9%E5%B1%95)。 Sentinel starter 整合了目前存在的几类 DataSource。只需要在配置文件中进行相关配置,即可在 Spring 容器中自动注册 DataSource。 @@ -210,7 +210,7 @@ Sentinel starter 整合了目前存在的几类 DataSource。只需要在配置 然后使用`@SentinelDataSource` 注解修饰 DataSource 即可注入: @SentinelDataSource("spring.cloud.sentinel.datasource") - private DataSource dataSource; + private ReadableDataSource dataSource; `@SentinelDataSource` 注解的 value 属性可以不填。默认值就是 `spring.cloud.sentinel.datasource`。 @@ -230,7 +230,7 @@ type目前支持file, nacos, zk, apollo。 1. 定义DataSource - public class CustomDataSource implements DataSource { + public class CustomDataSource implements ReadableDataSource { private String fieldA; private String fieldB; ... diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md index 8d838ebcd3..a51ed38adb 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md @@ -165,9 +165,9 @@ To see the metrics, click **实时监控(Real-time Monitoring)** in the left-sid

-## DataSource +## ReadableDataSource -Sentinel provide [DataSource](https://github.com/alibaba/Sentinel/blob/master/sentinel-extension/sentinel-datasource-extension/src/main/java/com/alibaba/csp/sentinel/datasource/DataSource.java) to manage dynamic rules. +Sentinel provide [ReadableDataSource](https://github.com/alibaba/Sentinel/blob/master/sentinel-extension/sentinel-datasource-extension/src/main/java/com/alibaba/csp/sentinel/datasource/ReadableDataSource.java) to manage dynamic rules. Sentinel starter integrated 4 DataSources provided by Sentinel. It will be register into Spring Context if you write some configs in `application.properties`. @@ -183,7 +183,7 @@ If you want to define FileRefreshableDataSource: then use `@SentinelDataSource` to annotate DataSource: @SentinelDataSource("spring.cloud.sentinel.datasource") - private DataSource dataSource; + private ReadableDataSource dataSource; The value() of `@SentinelDataSource` is not required, it means the prefix of configuration. Default value is `spring.cloud.sentinel.datasource`. @@ -201,7 +201,7 @@ User-defined DataSource need 2 steps. 1. Define DataSource - public class CustomDataSource implements DataSource { + public class CustomDataSource implements ReadableDataSource { private String fieldA; private String fieldB; ... diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java index 7f81899a49..627c5be03f 100644 --- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java +++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/SentinelDataSourcePostProcessor.java @@ -36,15 +36,27 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor; import org.springframework.beans.factory.support.RootBeanDefinition; +import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.cloud.alibaba.sentinel.SentinelConstants; import org.springframework.cloud.alibaba.sentinel.annotation.SentinelDataSource; import org.springframework.cloud.alibaba.sentinel.util.PropertySourcesUtils; import org.springframework.context.ApplicationContext; +import org.springframework.context.event.EventListener; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import com.alibaba.csp.sentinel.datasource.Converter; +import com.alibaba.csp.sentinel.datasource.ReadableDataSource; +import com.alibaba.csp.sentinel.property.SentinelProperty; +import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule; +import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRuleManager; +import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; +import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager; +import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; +import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; +import com.alibaba.csp.sentinel.slots.system.SystemRule; +import com.alibaba.csp.sentinel.slots.system.SystemRuleManager; /** * {@link SentinelDataSource @SentinelDataSource} Post Processor @@ -187,7 +199,42 @@ private void registerDataSource(String beanName, Class targetClass, beanFactory.registerBeanDefinition(beanName, builder.getBeanDefinition()); } - class SentinelDataSourceField { + + @EventListener(classes = ApplicationStartedEvent.class) + public void appStartedListener(ApplicationStartedEvent event) throws Exception { + Map dataSourceMap = event.getApplicationContext().getBeansOfType(ReadableDataSource.class); + if(dataSourceMap.size() == 1) { + ReadableDataSource dataSource = dataSourceMap.values().iterator().next(); + Object ruleConfig = dataSource.loadConfig(); + SentinelProperty sentinelProperty = dataSource.getProperty(); + if(checkRuleType(ruleConfig, FlowRule.class)) { + FlowRuleManager.register2Property(sentinelProperty); + } + if(checkRuleType(ruleConfig, DegradeRule.class)) { + DegradeRuleManager.register2Property(sentinelProperty); + } + if(checkRuleType(ruleConfig, SystemRule.class)) { + SystemRuleManager.register2Property(sentinelProperty); + } + if(checkRuleType(ruleConfig, AuthorityRule.class)) { + AuthorityRuleManager.register2Property(sentinelProperty); + } + } + } + + private boolean checkRuleType(Object ruleConfig, Class type) { + if(ruleConfig.getClass() == type) { + return true; + } else if(ruleConfig instanceof List) { + List ruleList = (List)ruleConfig; + if(ruleList.stream().filter(rule -> rule.getClass() == type).toArray().length == ruleList.size()) { + return true; + } + } + return false; + } + + class SentinelDataSourceField { private SentinelDataSource sentinelDataSource; private Field field; From 1ce28f00f3255aba56662e2ab75e3e70d679b522 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Wed, 17 Oct 2018 16:04:44 +0800 Subject: [PATCH 16/17] converter property fix --- .../src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties index 2e6342de22..fd8d3b6da9 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties @@ -10,5 +10,5 @@ spring.cloud.sentinel.datasource.type=file spring.cloud.sentinel.datasource.recommendRefreshMs=3000 spring.cloud.sentinel.datasource.bufSize=4056196 spring.cloud.sentinel.datasource.charset=utf-8 -spring.cloud.sentinel.datasource.configParser=myParser +spring.cloud.sentinel.datasource.converter=myParser spring.cloud.sentinel.datasource.file=/Users/you/rule.json \ No newline at end of file From 47cab99b2c767e4ce3ff8c0c73a7021ac4fa3f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=A6=E7=9B=8F?= Date: Wed, 17 Oct 2018 17:49:19 +0800 Subject: [PATCH 17/17] separate registry and discovery --- .../NacosDiscoveryAutoConfiguration.java | 6 -- .../alibaba/nacos/NacosDiscoveryClient.java | 25 ++++-- ...NacosDiscoveryClientAutoConfiguration.java | 6 ++ .../nacos/NacosDiscoveryProperties.java | 35 ++++++++ .../endpoint/NacosDiscoveryEndpoint.java | 6 +- ...cosDiscoveryEndpointAutoConfiguration.java | 1 - .../nacos/registry/NacosRegistration.java | 22 +---- .../alibaba/nacos/ribbon/NacosServerList.java | 6 +- .../NacosDiscoveryAutoConfigurationTests.java | 3 +- .../NacosRibbonClientConfigurationTests.java | 83 +++++++++---------- 10 files changed, 109 insertions(+), 84 deletions(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfiguration.java index b618014484..21a8d303cf 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfiguration.java @@ -48,12 +48,6 @@ public NacosServiceRegistry nacosServiceRegistry() { return new NacosServiceRegistry(); } - @Bean - @ConditionalOnMissingBean - public NacosDiscoveryProperties nacosProperties() { - return new NacosDiscoveryProperties(); - } - @Bean @ConditionalOnBean(AutoServiceRegistrationProperties.class) public NacosRegistration nacosRegistration() { diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java index d32a6b0d3a..59ea1ec731 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClient.java @@ -19,12 +19,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.alibaba.nacos.registry.NacosRegistration; +import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.core.env.Environment; import java.util.*; +import javax.annotation.PostConstruct; + import com.alibaba.nacos.api.naming.NamingService; import com.alibaba.nacos.api.naming.pojo.Instance; import com.alibaba.nacos.api.naming.pojo.ListView; @@ -39,7 +42,18 @@ public class NacosDiscoveryClient implements DiscoveryClient { public static final String DESCRIPTION = "Spring Cloud Nacos Discovery Client"; @Autowired - private NacosRegistration nacosRegistration; + private NacosDiscoveryProperties discoveryProperties; + + @Autowired + private Environment environment; + + private NamingService namingService; + + @PostConstruct + public void init() { + discoveryProperties.overrideFromEnv(environment); + namingService = discoveryProperties.getNamingService(); + } @Override public String description() { @@ -49,7 +63,6 @@ public String description() { @Override public List getInstances(String serviceId) { try { - NamingService namingService = nacosRegistration.getNacosNamingService(); List instances = namingService.getAllInstances(serviceId); return hostToServiceInstanceList(instances, serviceId); } @@ -79,7 +92,7 @@ private static List hostToServiceInstanceList( List instances, String serviceId) { List result = new ArrayList(instances.size()); for (Instance instance : instances) { - if(instance.isHealthy()) { + if (instance.isHealthy()) { result.add(hostToServiceInstance(instance, serviceId)); } } @@ -90,7 +103,6 @@ private static List hostToServiceInstanceList( public List getServices() { try { - NamingService namingService = nacosRegistration.getNacosNamingService(); ListView services = namingService.getServicesOfServer(1, Integer.MAX_VALUE); return services.getData(); @@ -101,4 +113,7 @@ public List getServices() { } } + public NamingService getNamingService() { + return namingService; + } } diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClientAutoConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClientAutoConfiguration.java index 2563cbe6da..05049f4b37 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryClientAutoConfiguration.java @@ -36,4 +36,10 @@ public DiscoveryClient nacosDiscoveryClient() { return new NacosDiscoveryClient(); } + @Bean + @ConditionalOnMissingBean + public NacosDiscoveryProperties nacosProperties() { + return new NacosDiscoveryProperties(); + } + } diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java index 43b6a5c7ef..aa9271a8d3 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryProperties.java @@ -16,6 +16,8 @@ package org.springframework.cloud.alibaba.nacos; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -33,6 +35,18 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.Properties; + +import com.alibaba.nacos.api.NacosFactory; +import com.alibaba.nacos.api.naming.NamingService; +import com.alibaba.nacos.client.naming.utils.UtilAndComs; + +import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY; +import static com.alibaba.nacos.api.PropertyKeyConst.CLUSTER_NAME; +import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT; +import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE; +import static com.alibaba.nacos.api.PropertyKeyConst.SECRET_KEY; +import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR; /** * @author dungu.zpf @@ -42,6 +56,9 @@ @ConfigurationProperties("spring.cloud.nacos.discovery") public class NacosDiscoveryProperties { + private static final Logger LOGGER = LoggerFactory + .getLogger(NacosDiscoveryProperties.class); + /** * nacos discovery server address */ @@ -333,4 +350,22 @@ public void overrideFromEnv(Environment env) { } } + public NamingService getNamingService() { + Properties properties = new Properties(); + properties.put(SERVER_ADDR, serverAddr); + properties.put(NAMESPACE, namespace); + properties.put(UtilAndComs.NACOS_NAMING_LOG_NAME, logName); + properties.put(ENDPOINT, endpoint); + properties.put(ACCESS_KEY, accessKey); + properties.put(SECRET_KEY, secretKey); + properties.put(CLUSTER_NAME, clusterName); + try { + return NacosFactory.createNamingService(properties); + } + catch (Exception e) { + LOGGER.error("create naming service error!properties={},e=,", this, e); + return null; + } + } + } diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpoint.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpoint.java index da49d6c298..db384df5e4 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpoint.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpoint.java @@ -29,8 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.cloud.alibaba.nacos.NacosDiscoveryClient; import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties; -import org.springframework.cloud.alibaba.nacos.registry.NacosRegistration; /** * Endpoint for nacos discovery, get nacos properties and subscribed services @@ -46,7 +46,7 @@ public class NacosDiscoveryEndpoint { private NacosDiscoveryProperties nacosDiscoveryProperties; @Autowired - private NacosRegistration nacosRegistration; + private NacosDiscoveryClient discoveryClient; /** * @return nacos discovery endpoint @@ -56,7 +56,7 @@ public Map nacosDiscovery() { Map result = new HashMap<>(); result.put("NacosDiscoveryProperties", nacosDiscoveryProperties); - NamingService namingService = nacosRegistration.getNacosNamingService(); + NamingService namingService = discoveryClient.getNamingService(); List subscribe = Collections.emptyList(); try { diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java index 2b6c46352b..c8716ad41a 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java @@ -28,7 +28,6 @@ * @author xiaojing */ @Configuration -@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true) @ConditionalOnClass(Endpoint.class) public class NacosDiscoveryEndpointAutoConfiguration { diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java index 4d923facf4..639dad981d 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java @@ -28,15 +28,10 @@ import java.net.URI; import java.util.Map; -import java.util.Properties; import javax.annotation.PostConstruct; -import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.naming.NamingService; -import com.alibaba.nacos.client.naming.utils.UtilAndComs; - -import static com.alibaba.nacos.api.PropertyKeyConst.*; /** * @author xiaojing @@ -60,22 +55,7 @@ public void init() { Environment env = context.getEnvironment(); nacosDiscoveryProperties.overrideFromEnv(context.getEnvironment()); - - Properties properties = new Properties(); - properties.put(SERVER_ADDR, nacosDiscoveryProperties.getServerAddr()); - properties.put(NAMESPACE, nacosDiscoveryProperties.getNamespace()); - properties.put(UtilAndComs.NACOS_NAMING_LOG_NAME, - nacosDiscoveryProperties.getLogName()); - properties.put(ENDPOINT, nacosDiscoveryProperties.getEndpoint()); - properties.put(ACCESS_KEY, nacosDiscoveryProperties.getAccessKey()); - properties.put(SECRET_KEY, nacosDiscoveryProperties.getSecretKey()); - properties.put(CLUSTER_NAME, nacosDiscoveryProperties.getClusterName()); - try { - nacosNamingService = NacosFactory.createNamingService(properties); - } - catch (Exception e) { - - } + nacosNamingService = nacosDiscoveryProperties.getNamingService(); Integer managementPort = ManagementServerPortUtils.getPort(context); if (null != managementPort) { diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java index 3eb43bbcca..2614566223 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java @@ -19,7 +19,7 @@ import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.AbstractServerList; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.alibaba.nacos.registry.NacosRegistration; +import org.springframework.cloud.alibaba.nacos.NacosDiscoveryClient; import java.util.ArrayList; import java.util.List; @@ -32,7 +32,7 @@ public class NacosServerList extends AbstractServerList { @Autowired - private NacosRegistration registration; + private NacosDiscoveryClient discoveryClient; private String serviceId; @@ -55,7 +55,7 @@ public List getUpdatedListOfServers() { private List getServers() { try { - List instances = registration.getNacosNamingService() + List instances = discoveryClient.getNamingService() .getAllInstances(serviceId); return instancesToServerList(instances); } diff --git a/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfigurationTests.java b/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfigurationTests.java index b7e5d8016a..3d15a8fc22 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfigurationTests.java +++ b/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfigurationTests.java @@ -37,7 +37,8 @@ public class NacosDiscoveryAutoConfigurationTests { private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() .withConfiguration( AutoConfigurations.of(NacosDiscoveryTestConfiguration.class, - NacosDiscoveryAutoConfiguration.class)) + NacosDiscoveryAutoConfiguration.class, + NacosDiscoveryClientAutoConfiguration.class)) .withPropertyValues("spring.cloud.nacos.discovery.server-addr=127.0.0.1:8080") .withPropertyValues("spring.cloud.nacos.discovery.port=18080") .withPropertyValues("spring.cloud.nacos.discovery.service=myapp"); diff --git a/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosRibbonClientConfigurationTests.java b/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosRibbonClientConfigurationTests.java index 8c6da42903..ad5da1b24b 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosRibbonClientConfigurationTests.java +++ b/spring-cloud-alibaba-nacos-discovery/src/test/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosRibbonClientConfigurationTests.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.cloud.alibaba.nacos.NacosDiscoveryClientAutoConfiguration; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; @@ -19,49 +20,43 @@ */ public class NacosRibbonClientConfigurationTests { - - private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() - .withConfiguration( - AutoConfigurations.of(NacosRibbonTestConfiguration.class, - NacosRibbonClientConfiguration.class, - RibbonNacosAutoConfiguration.class)) - .withPropertyValues("spring.cloud.nacos.discovery.server-addr=127.0.0.1:8080") - .withPropertyValues("spring.cloud.nacos.discovery.port=18080") - .withPropertyValues("spring.cloud.nacos.discovery.service=myapp"); - - - - @Test - public void testProperties() { - - this.contextRunner.run(context -> { - NacosServerList serverList = context.getBean(NacosServerList.class); - assertThat(serverList.getServiceId()).isEqualTo("myapp"); - }); - } - - - @Configuration - @EnableAutoConfiguration - @EnableDiscoveryClient - static class NacosRibbonTestConfiguration { - - - @Bean - IClientConfig iClientConfig(){ - //return new IClientConfig.Builder().s.build(); - DefaultClientConfigImpl config = new DefaultClientConfigImpl(); - config.setClientName("myapp"); - return config; - } - - - @Bean - @LoadBalanced - RestTemplate restTemplate(){ - return new RestTemplate(); - } - - } + private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(NacosRibbonTestConfiguration.class, + NacosRibbonClientConfiguration.class, + NacosDiscoveryClientAutoConfiguration.class, + RibbonNacosAutoConfiguration.class)) + .withPropertyValues("spring.cloud.nacos.discovery.server-addr=127.0.0.1:8080") + .withPropertyValues("spring.cloud.nacos.discovery.port=18080") + .withPropertyValues("spring.cloud.nacos.discovery.service=myapp"); + + @Test + public void testProperties() { + + this.contextRunner.run(context -> { + NacosServerList serverList = context.getBean(NacosServerList.class); + assertThat(serverList.getServiceId()).isEqualTo("myapp"); + }); + } + + @Configuration + @EnableAutoConfiguration + @EnableDiscoveryClient + static class NacosRibbonTestConfiguration { + + @Bean + IClientConfig iClientConfig() { + // return new IClientConfig.Builder().s.build(); + DefaultClientConfigImpl config = new DefaultClientConfigImpl(); + config.setClientName("myapp"); + return config; + } + + @Bean + @LoadBalanced + RestTemplate restTemplate() { + return new RestTemplate(); + } + + } }