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 eb1f2be7..8e51c855 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 @@ import org.springframework.core.Ordered; @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; - /** - * Sentinel dashboard address, won't try to connect dashboard when address is empty - */ - private String dashboard = ""; + /** + * Enable sentinel auto configure, the default value is true + */ + private boolean enabled = true; - @NestedConfigurationProperty - private Filter filter; + /** + * 字符编码集 + */ + private String charset = "UTF-8"; - public boolean isEnabled() { - return enabled; - } + /** + * 通信相关配置 + */ + @NestedConfigurationProperty + private Transport transport = new Transport(); - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } + /** + * 监控数据相关配置 + */ + @NestedConfigurationProperty + private Metric metric = new Metric(); - public String getPort() { - return port; - } + /** + * web 相关配置 + */ + @NestedConfigurationProperty + private Servlet servlet = new Servlet(); - public void setPort(String port) { - this.port = port; - } + /** + * 限流相关 + */ + @NestedConfigurationProperty + private Filter filter = new Filter(); - public String getDashboard() { - return dashboard; - } + @NestedConfigurationProperty + private Flow flow = new Flow(); - public void setDashboard(String dashboard) { - this.dashboard = dashboard; - } + public boolean isEager() { + return eager; + } - public Filter getFilter() { - return filter; - } + public void setEager(boolean eager) { + this.eager = eager; + } - public void setFilter(Filter filter) { - this.filter = filter; - } + public Flow getFlow() { + return flow; + } - public static class Filter { + public void setFlow(Flow flow) { + this.flow = flow; + } - /** - * Sentinel filter chain order. - */ - private int order = Ordered.HIGHEST_PRECEDENCE; + public String getCharset() { + return charset; + } - /** - * URL pattern for sentinel filter,default is /* - */ - private List urlPatterns; + public void setCharset(String charset) { + this.charset = charset; + } - public int getOrder() { - return this.order; - } + public Transport getTransport() { + return transport; + } - public void setOrder(int order) { - this.order = order; - } + public void setTransport(Transport transport) { + this.transport = transport; + } - public List getUrlPatterns() { - return urlPatterns; - } + 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 = ""; + + /** + * 客户端和DashBord心跳发送时间 + */ + private String heartbeatIntervalMs; + + public String getHeartbeatIntervalMs() { + return heartbeatIntervalMs; + } + + public void setHeartbeatIntervalMs(String heartbeatIntervalMs) { + this.heartbeatIntervalMs = heartbeatIntervalMs; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + 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; + + /** + * 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; + } + } - 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 f982e8ce..967819ad 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 @@ import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; @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<>(); + @Autowired + @Qualifier + private Optional urlBlockHandlerOptional; - SentinelProperties.Filter filterConfig = properties.getFilter(); + @Autowired + @Qualifier + private Optional urlCleanerOptional; - if (null == filterConfig) { - filterConfig = new SentinelProperties.Filter(); - properties.setFilter(filterConfig); - } + @PostConstruct + public void init() { - if (filterConfig.getUrlPatterns() == null - || filterConfig.getUrlPatterns().isEmpty()) { - List defaultPatterns = new ArrayList<>(); - defaultPatterns.add("/*"); - filterConfig.setUrlPatterns(defaultPatterns); - } + if (urlBlockHandlerOptional.isPresent()) { + WebCallbackManager.setUrlBlockHandler(urlBlockHandlerOptional.get()); + } - 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; + if (urlCleanerOptional.isPresent()) { + WebCallbackManager.setUrlCleaner(urlCleanerOptional.get()); + } + + if (StringUtils.hasText(properties.getServlet().getBlockPage())) { + WebServletConfig.setBlockPage(properties.getServlet().getBlockPage()); + } + + } + + @Bean + public FilterRegistrationBean servletRequestListener() { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); + + SentinelProperties.Filter filterConfig = properties.getFilter(); + + 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); + } + + 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 62342292..98b3a6dd 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.cloud.alibaba.sentinel.datasource.SentinelDataSourceP 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))) { - System.setProperty(TransportConfig.CONSOLE_SERVER, properties.getDashboard()); + 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 (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 29fbc8ee..521e7d7c 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 class SentinelAutoConfigurationTests { 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 8e51c855..0d367843 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 @@ import java.util.List; /** * @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 967819ad..f16a96ce 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 @@ import java.util.Optional; /** * @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 2b51b36f..c19630e8 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 0ed81660..c9e77f35 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.context.annotation.Configuration; import org.springframework.util.StringUtils; import javax.annotation.PostConstruct; +import java.util.Optional; /** * @author xiaojing @@ -51,11 +51,11 @@ import javax.annotation.PostConstruct; @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 53ac35f2..2fc24448 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 b5e447e0..f0f49e1d 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 0610dbe0..3f32646a 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 98065cf4..c42de657 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 40652e79..e287c761 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 45fa51b9..394ad207 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 5706a4fc..d32a6b0d 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 class NacosDiscoveryClient implements DiscoveryClient { 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 @@ public class NacosDiscoveryClient implements DiscoveryClient { 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 29bb54ae..8a7ede08 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 a5d8e35f..877646ae 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 00000000..49968741 --- /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 bea93264..6e7a3178 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 | 370 +++++++++--------- .../SentinelWebAutoConfiguration.java | 62 +-- .../custom/SentinelAutoConfiguration.java | 167 ++++---- 3 files changed, 309 insertions(+), 290 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 0d367843..3f91a3b0 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 @@ import java.util.List; @ConfigurationProperties(prefix = SentinelConstants.PROPERTY_PREFIX) public class SentinelProperties { + /** + * 是否提前初始化心跳连接 + */ + private boolean eager = false; - /** - * 是否提前初始化心跳连接 - */ - private boolean eager = false; + /** + * Enable sentinel auto configure, the default value is true + */ + private boolean enabled = true; - /** - * Enable sentinel auto configure, the default value is true - */ - private boolean enabled = true; + /** + * 字符编码集 + */ + private String charset = "UTF-8"; - /** - * 字符编码集 - */ - private String charset = "UTF-8"; + /** + * 通信相关配置 + */ + @NestedConfigurationProperty + private Transport transport = new Transport(); - /** - * 通信相关配置 - */ - @NestedConfigurationProperty - private Transport transport = new Transport(); + /** + * 监控数据相关配置 + */ + @NestedConfigurationProperty + private Metric metric = new Metric(); - /** - * 监控数据相关配置 - */ - @NestedConfigurationProperty - private Metric metric = new Metric(); + /** + * web 相关配置 + */ + @NestedConfigurationProperty + private Servlet servlet = new Servlet(); - /** - * web 相关配置 - */ - @NestedConfigurationProperty - private Servlet servlet = new Servlet(); + /** + * 限流相关 + */ + @NestedConfigurationProperty + private Filter filter = new Filter(); - /** - * 限流相关 - */ - @NestedConfigurationProperty - private Filter filter = new Filter(); + @NestedConfigurationProperty + private Flow flow = new Flow(); - @NestedConfigurationProperty - private Flow flow = new Flow(); + public boolean isEager() { + return eager; + } - public boolean isEager() { - return eager; - } + public void setEager(boolean eager) { + this.eager = eager; + } - public void setEager(boolean eager) { - this.eager = eager; - } + public Flow getFlow() { + return flow; + } - public Flow getFlow() { - return flow; - } + public void setFlow(Flow flow) { + this.flow = flow; + } - public void setFlow(Flow flow) { - this.flow = flow; - } + public String getCharset() { + return charset; + } - public String getCharset() { - return charset; - } + public void setCharset(String charset) { + this.charset = charset; + } - public void setCharset(String charset) { - this.charset = charset; - } + public Transport getTransport() { + return transport; + } - public Transport getTransport() { - return transport; - } + public void setTransport(Transport transport) { + this.transport = transport; + } - public void setTransport(Transport transport) { - this.transport = transport; - } + public Metric getMetric() { + return metric; + } - public Metric getMetric() { - return metric; - } + public void setMetric(Metric metric) { + this.metric = metric; + } - public void setMetric(Metric metric) { - this.metric = metric; - } + public Servlet getServlet() { + return servlet; + } - public Servlet getServlet() { - return servlet; - } + public void setServlet(Servlet servlet) { + this.servlet = servlet; + } - public void setServlet(Servlet servlet) { - this.servlet = servlet; - } + public boolean isEnabled() { + return enabled; + } - public boolean isEnabled() { - return enabled; - } + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } + public Filter getFilter() { + return filter; + } - public Filter getFilter() { - return filter; - } + public void setFilter(Filter filter) { + this.filter = filter; + } - public void setFilter(Filter filter) { - this.filter = filter; - } + public static class Flow { - public static class Flow { + /** + * 限流冷启动因子 + */ + private String coldFactor = "3"; - /** - * 限流冷启动因子 - */ - private String coldFactor = "3"; + public String getColdFactor() { + return coldFactor; + } - public String getColdFactor() { - return coldFactor; - } + public void setColdFactor(String coldFactor) { + this.coldFactor = coldFactor; + } - public void setColdFactor(String coldFactor) { - this.coldFactor = coldFactor; - } + } - } + public static class Servlet { - public static class Servlet { + /** + * url 限流后的处理页面 + */ + private String blockPage; - /** - * url 限流后的处理页面 - */ - private String blockPage; + public String getBlockPage() { + return blockPage; + } - public String getBlockPage() { - return blockPage; - } + public void setBlockPage(String blockPage) { + this.blockPage = blockPage; + } + } - public void setBlockPage(String blockPage) { - this.blockPage = blockPage; - } - } + public static class Metric { - public static class Metric { + /** + * 监控数据写磁盘时单个文件的大小 + */ + private String fileSingleSize; - /** - * 监控数据写磁盘时单个文件的大小 - */ - private String fileSingleSize; + /** + * 监控数据在磁盘上的总数量 + */ + private String fileTotalCount; - /** - * 监控数据在磁盘上的总数量 - */ - private String fileTotalCount; + public String getFileSingleSize() { + return fileSingleSize; + } - public String getFileSingleSize() { - return fileSingleSize; - } + public void setFileSingleSize(String fileSingleSize) { + this.fileSingleSize = fileSingleSize; + } - public void setFileSingleSize(String fileSingleSize) { - this.fileSingleSize = fileSingleSize; - } + public String getFileTotalCount() { + return fileTotalCount; + } - public String getFileTotalCount() { - return fileTotalCount; - } + public void setFileTotalCount(String fileTotalCount) { + this.fileTotalCount = fileTotalCount; + } + } - public void setFileTotalCount(String fileTotalCount) { - this.fileTotalCount = fileTotalCount; - } - } + public static class Transport { - public static class Transport { + /** + * sentinel api port,default value is 8721 + */ + private String port = "8721"; - /** - * 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 = ""; + /** + * 客户端和DashBord心跳发送时间 + */ + private String heartbeatIntervalMs; - /** - * 客户端和DashBord心跳发送时间 - */ - private String heartbeatIntervalMs; + public String getHeartbeatIntervalMs() { + return heartbeatIntervalMs; + } - public String getHeartbeatIntervalMs() { - return heartbeatIntervalMs; - } + public void setHeartbeatIntervalMs(String heartbeatIntervalMs) { + this.heartbeatIntervalMs = heartbeatIntervalMs; + } - 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 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/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 c19630e8..8428632f 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.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.servlet.Filter; -import java.util.ArrayList; -import java.util.List; +import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter; /** * @author xiaojing @@ -40,38 +42,38 @@ import java.util.List; @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 c9e77f35..ce0e7a91 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.Bean; 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 @@ import java.util.Optional; @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; + @Autowired + private Optional urlCleanerOptional; - @Autowired - private Optional urlBlockHandlerOptional; + @Autowired + private Optional urlBlockHandlerOptional; - @PostConstruct - private void init() { + @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.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); + if (StringUtils.hasText(properties.getServlet().getBlockPage())) { + WebServletConfig.setBlockPage(properties.getServlet().getBlockPage()); + } + urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler); + urlCleanerOptional.ifPresent(WebCallbackManager::setUrlCleaner); - InitExecutor.doInit(); + InitExecutor.doInit(); - // earlier initialize - if (properties.isEager()) { - NodeBuilder nodeBuilder = Env.nodeBuilder; - } + // earlier initialize + if (properties.isEager()) { + 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(); + } } 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 3f91a3b0..bd712095 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.ConfigurationProperties; 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 @@ import org.springframework.core.Ordered; 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 class SentinelProperties { public static class Flow { /** - * 限流冷启动因子 + * the cold factor {@link SentinelConfig#COLD_FACTOR} */ private String coldFactor = "3"; @@ -156,7 +165,7 @@ public class SentinelProperties { public static class Servlet { /** - * url 限流后的处理页面 + * The process page when the flow control is triggered */ private String blockPage; @@ -172,12 +181,12 @@ public class SentinelProperties { 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 class SentinelProperties { 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 class SentinelProperties { 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 ce0e7a91..2f0ef608 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.Bean; 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.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; @@ -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 @@ public class SentinelAutoConfiguration { 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 521e7d7c..647fde93 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 @@ import com.alibaba.csp.sentinel.slots.block.BlockException; /** * @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 49d1e898..a4b4d87a 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 86156b53..daaa3e8f 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 8f8ade55..2e6342de 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 ea51f5e5..b3e40d08 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 32b4098f..54a9cfa1 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 0811db0a..c0941db3 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 f0f49e1d..a8388a1e 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 3f32646a..88568164 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 c42de657..cfa08a11 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 e287c761..56ac5cb6 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 394ad207..17dfbbdc 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 e4c9fa15..ed4acb01 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 8a7ede08..d486d2c0 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 e5e56de7..d29039b0 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 9ab78b03..194933c3 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.ConditionalOnClass; 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 7bf76938..4f058792 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 cd39077e..323c1754 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 02a89b58..d417a858 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 e764d2c4..c056d586 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 bd46ee0b..159f2c49 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 30f48b23..08ef10aa 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 00000000..4f71c2da --- /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 a87e0af1..96a14553 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 b0caf019..1af1f285 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.beans.factory.annotation.Qualifier; 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 9945ef83..00000000 --- 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 49968741..f44393a4 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 6e7a3178..e52d2272 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 88568164..2ff41fde 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 a8388a1e..1353ad3e 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 2ff41fde..058625b5 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 f7cedc41..a011d829 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 ec343d5c..65fbbfb0 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 294a44b9..c2e5952a 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 e56d92d4..d4041f66 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 cfa08a11..33442b3a 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 ed4acb01..f02eadbb 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 ec35b244..314ee8f8 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 24cde890..6c989f5d 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 890656ea..ba88981a 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 87adbbaf..c59f4ba6 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 12ff873c..6bbc1217 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 3c6bd31a..e0aaa47d 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 1ac5ef31..74b58421 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 26712634..72d30a98 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 289cc1bb..1261226d 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 3a7b21dc..9197c5f8 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 d486d2c0..09e11454 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 877646ae..303e785f 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 2befd40c..60c0e489 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 2ce41a2f..08bcf547 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 70300f79..32aab630 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 f44393a4..a28fc12b 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 e52d2272..74ed72f3 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 6fb8ffa9..4e5d63b6 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 com.alibaba.nacos.api.exception.NacosException; 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 @@ public class NacosPropertySourceBuilder { 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 058625b5..167f71e9 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 255eb789..b205c96c 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 @@ package org.springframework.cloud.alibaba.cloud.examples; 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 @@ import com.alibaba.fastjson.TypeReference; /** * @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 0dccda2f..fe00e033 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 class ServiceApplication { } @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 7ac89dfc..06871766 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.core.io.support.ResourcePatternResolver; 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 @@ public class DataSourceLoader { 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 @@ public class DataSourceLoader { 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 05914b7d..7f81899a 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.core.env.ConfigurableEnvironment; 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 @@ public class SentinelDataSourcePostProcessor 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 48458f82..09b39bb4 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 @@ package org.springframework.cloud.alibaba.sentinel.datasource.factorybean; 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 class NacosDataSourceFactoryBean implements FactoryBean 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 b0ea5aaa..aa10270a 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 @@ package org.springframework.cloud.alibaba.sentinel.datasource.factorybean; 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 10620415..4d923fac 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.cloud.alibaba.nacos.NacosDiscoveryProperties; 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 @@ import static com.alibaba.nacos.api.PropertyKeyConst.*; */ 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 class NacosRegistration implements Registration, ServiceInstance { 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 class NacosRegistration implements Registration, ServiceInstance { } 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 a4b4d87a..47b4a51d 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 daaa3e8f..8d838ebc 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 ef09eb0e..93ef1bdb 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 9bd92eee..ceb90ee1 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 @@ package org.springframework.cloud.alibaba.sentinel.datasource; 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 @@ import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.Zookeep * 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 @@ import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.Zookeep */ 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 47b4a51d..4c0b2aeb 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 8d838ebc..a51ed38a 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 7f81899a..627c5be0 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.BeanDefinitionBuilder; 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 @@ public class SentinelDataSourcePostProcessor 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 2e6342de..fd8d3b6d 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 | 71 +++++++++---------- 10 files changed, 103 insertions(+), 78 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 b6180144..21a8d303 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 class NacosDiscoveryAutoConfiguration { 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 d32a6b0d..59ea1ec7 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 @@ package org.springframework.cloud.alibaba.nacos; 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 class NacosDiscoveryClient implements DiscoveryClient { @Override public List getInstances(String serviceId) { try { - NamingService namingService = nacosRegistration.getNacosNamingService(); List instances = namingService.getAllInstances(serviceId); return hostToServiceInstanceList(instances, serviceId); } @@ -79,7 +92,7 @@ public class NacosDiscoveryClient implements DiscoveryClient { 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 @@ public class NacosDiscoveryClient implements DiscoveryClient { public List getServices() { try { - NamingService namingService = nacosRegistration.getNacosNamingService(); ListView services = namingService.getServicesOfServer(1, Integer.MAX_VALUE); return services.getData(); @@ -101,4 +113,7 @@ public class NacosDiscoveryClient implements DiscoveryClient { } } + 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 2563cbe6..05049f4b 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 class NacosDiscoveryClientAutoConfiguration { 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 43b6a5c7..aa9271a8 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.Enumeration; 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 @@ import java.util.Objects; @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 class NacosDiscoveryProperties { } } + 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 da49d6c2..db384df5 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.slf4j.LoggerFactory; 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 class NacosDiscoveryEndpoint { 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 2b6c4635..c8716ad4 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 @@ import org.springframework.context.annotation.Configuration; * @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 4d923fac..639dad98 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 org.springframework.util.StringUtils; 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 class NacosRegistration implements Registration, ServiceInstance { 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 3eb43bbc..26145662 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 @@ package org.springframework.cloud.alibaba.nacos.ribbon; 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 @@ import com.alibaba.nacos.api.naming.pojo.Instance; public class NacosServerList extends AbstractServerList { @Autowired - private NacosRegistration registration; + private NacosDiscoveryClient discoveryClient; private String serviceId; @@ -55,7 +55,7 @@ public class NacosServerList extends AbstractServerList { 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 b7e5d801..3d15a8fc 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 8c6da429..ad5da1b2 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.junit.Test; 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 @@ import static org.assertj.core.api.Assertions.assertThat; */ public class NacosRibbonClientConfigurationTests { + 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"); - 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 { - @Test - public void testProperties() { + @Bean + IClientConfig iClientConfig() { + // return new IClientConfig.Builder().s.build(); + DefaultClientConfigImpl config = new DefaultClientConfigImpl(); + config.setClientName("myapp"); + return config; + } - this.contextRunner.run(context -> { - NacosServerList serverList = context.getBean(NacosServerList.class); - assertThat(serverList.getServiceId()).isEqualTo("myapp"); - }); - } + @Bean + @LoadBalanced + RestTemplate restTemplate() { + return new RestTemplate(); + } - - @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(); - } - - } + } }