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 fd6c6875..f8e1217a 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
@@ -44,11 +44,6 @@
org.springframework.cloud
spring-cloud-starter-alibaba-sentinel
-
-
- org.springframework.cloud
- spring-cloud-alicloud-context
-
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 0f28a7ac..9397b274 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
@@ -29,11 +29,6 @@
org.springframework.boot
spring-boot-starter-actuator
-
-
- org.springframework.cloud
- spring-cloud-alicloud-context
-
diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfiguration.java b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfiguration.java
index 076d884f..94933a4d 100644
--- a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfiguration.java
+++ b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfiguration.java
@@ -17,6 +17,7 @@
package org.springframework.cloud.alibaba.nacos;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -27,15 +28,17 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class NacosConfigBootstrapConfiguration {
- @Bean
- public NacosPropertySourceLocator nacosPropertySourceLocator() {
- return new NacosPropertySourceLocator();
- }
-
@Bean
@ConditionalOnMissingBean
public NacosConfigProperties nacosConfigProperties() {
return new NacosConfigProperties();
}
+ @Bean
+ @ConditionalOnProperty(name = "spring.cloud.nacos.config.enabled", matchIfMissing = true)
+ public NacosPropertySourceLocator nacosPropertySourceLocator(
+ NacosConfigProperties nacosConfigProperties) {
+ return new NacosPropertySourceLocator(nacosConfigProperties);
+ }
+
}
diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigProperties.java b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigProperties.java
index abeec2d7..d19e8acf 100644
--- a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigProperties.java
+++ b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/NacosConfigProperties.java
@@ -18,6 +18,7 @@ package org.springframework.cloud.alibaba.nacos;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,9 +45,14 @@ public class NacosConfigProperties {
public static final String PREFIX = "spring.cloud.nacos.config";
- private static final Logger LOGGER = LoggerFactory
+ private static final Logger log = LoggerFactory
.getLogger(NacosConfigProperties.class);
+ /**
+ * whether to enable nacos config.
+ */
+ private boolean enabled = true;
+
/**
* nacos config server address
*/
@@ -137,11 +143,15 @@ public class NacosConfigProperties {
this.activeProfiles = environment.getActiveProfiles();
}
- public void setActiveProfiles(String[] activeProfiles) {
- this.activeProfiles = activeProfiles;
+ // todo sts support
+
+ public boolean isEnabled() {
+ return enabled;
}
- // todo sts support
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
public String getServerAddr() {
return serverAddr;
@@ -243,10 +253,6 @@ public class NacosConfigProperties {
return name;
}
- public void setName(String name) {
- this.name = name;
- }
-
public String[] getActiveProfiles() {
return activeProfiles;
}
@@ -275,6 +281,14 @@ public class NacosConfigProperties {
this.extConfig = extConfig;
}
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setActiveProfiles(String[] activeProfiles) {
+ this.activeProfiles = activeProfiles;
+ }
+
public static class Config {
/**
* the data id of extended configuration
@@ -316,16 +330,17 @@ public class NacosConfigProperties {
@Override
public String toString() {
- return "NacosConfigProperties{" + "serverAddr='" + serverAddr + '\''
- + ", encode='" + encode + '\'' + ", group='" + group + '\''
- + ", sharedDataids='" + this.sharedDataids + '\''
- + ", refreshableDataids='" + this.refreshableDataids + '\'' + ", prefix='"
- + prefix + '\'' + ", fileExtension='" + fileExtension + '\''
- + ", timeout=" + timeout + ", endpoint='" + endpoint + '\''
- + ", namespace='" + namespace + '\'' + ", accessKey='" + accessKey + '\''
- + ", secretKey='" + secretKey + '\'' + ", contextPath='" + contextPath
- + '\'' + ", clusterName='" + clusterName + '\'' + ", name='" + name + '\''
- + ", activeProfiles=" + Arrays.toString(activeProfiles) + '}';
+ return "NacosConfigProperties{" + "enabled=" + enabled + ", serverAddr='"
+ + serverAddr + '\'' + ", encode='" + encode + '\'' + ", group='" + group
+ + '\'' + ", prefix='" + prefix + '\'' + ", fileExtension='"
+ + fileExtension + '\'' + ", timeout=" + timeout + ", endpoint='"
+ + endpoint + '\'' + ", namespace='" + namespace + '\'' + ", accessKey='"
+ + accessKey + '\'' + ", secretKey='" + secretKey + '\''
+ + ", contextPath='" + contextPath + '\'' + ", clusterName='" + clusterName
+ + '\'' + ", name='" + name + '\'' + ", activeProfiles="
+ + Arrays.toString(activeProfiles) + ", sharedDataids='" + sharedDataids
+ + '\'' + ", refreshableDataids='" + refreshableDataids + '\''
+ + ", extConfig=" + extConfig + '}';
}
public ConfigService configServiceInstance() {
@@ -348,7 +363,7 @@ public class NacosConfigProperties {
return configService;
}
catch (Exception e) {
- LOGGER.error("create config service error!properties={},e=,", this, e);
+ log.error("create config service error!properties={},e=,", this, e);
return null;
}
}
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 d7e0766f..d5369007 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
@@ -33,7 +33,7 @@ import java.util.*;
* @author pbting
*/
public class NacosPropertySourceBuilder {
- private static final Logger LOGGER = LoggerFactory
+ private static final Logger log = LoggerFactory
.getLogger(NacosPropertySourceBuilder.class);
private static final Properties EMPTY_PROPERTIES = new Properties();
@@ -68,9 +68,6 @@ public class NacosPropertySourceBuilder {
NacosPropertySource build(String dataId, String group, String fileExtension,
boolean isRefreshable) {
Properties p = loadNacosData(dataId, group, fileExtension);
- if (p == null) {
- p = EMPTY_PROPERTIES;
- }
NacosPropertySource nacosPropertySource = new NacosPropertySource(group, dataId,
propertiesToMap(p), new Date(), isRefreshable);
NacosPropertySourceRepository.collectNacosPropertySources(nacosPropertySource);
@@ -82,7 +79,7 @@ public class NacosPropertySourceBuilder {
try {
data = configService.getConfig(dataId, group, timeout);
if (!StringUtils.isEmpty(data)) {
- LOGGER.info(String.format("Loading nacos data, dataId: '%s', group: '%s'",
+ log.info(String.format("Loading nacos data, dataId: '%s', group: '%s'",
dataId, group));
if (fileExtension.equalsIgnoreCase("properties")) {
@@ -101,21 +98,20 @@ public class NacosPropertySourceBuilder {
}
}
catch (NacosException e) {
- LOGGER.error("get data from Nacos error,dataId:{}, ", dataId, e);
+ log.error("get data from Nacos error,dataId:{}, ", dataId, e);
}
catch (Exception e) {
- LOGGER.error("parse data from Nacos error,dataId:{},data:{},", dataId, data,
- e);
+ log.error("parse data from Nacos error,dataId:{},data:{},", dataId, data, e);
}
- return null;
+ return EMPTY_PROPERTIES;
}
@SuppressWarnings("unchecked")
private Map propertiesToMap(Properties properties) {
Map result = new HashMap<>(16);
- Enumeration tmpKeys = (Enumeration) properties.propertyNames();
- while (tmpKeys.hasMoreElements()) {
- String key = tmpKeys.nextElement();
+ Enumeration keys = (Enumeration) properties.propertyNames();
+ while (keys.hasMoreElements()) {
+ String key = keys.nextElement();
Object value = properties.getProperty(key);
if (value != null) {
result.put(key, ((String) value).trim());
@@ -126,4 +122,5 @@ public class NacosPropertySourceBuilder {
}
return result;
}
+
}
diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceLocator.java b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceLocator.java
index 647856b1..5ce9afea 100644
--- a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceLocator.java
+++ b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/client/NacosPropertySourceLocator.java
@@ -19,7 +19,6 @@ package org.springframework.cloud.alibaba.nacos.client;
import com.alibaba.nacos.api.config.ConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.alibaba.nacos.NacosConfigProperties;
import org.springframework.cloud.alibaba.nacos.NacosPropertySourceRepository;
import org.springframework.cloud.alibaba.nacos.refresh.NacosContextRefresher;
@@ -40,7 +39,7 @@ import java.util.List;
@Order(0)
public class NacosPropertySourceLocator implements PropertySourceLocator {
- private static final Logger LOGGER = LoggerFactory
+ private static final Logger log = LoggerFactory
.getLogger(NacosPropertySourceLocator.class);
private static final String NACOS_PROPERTY_SOURCE_NAME = "NACOS";
private static final String SEP1 = "-";
@@ -49,22 +48,21 @@ public class NacosPropertySourceLocator implements PropertySourceLocator {
private static final List SUPPORT_FILE_EXTENSION = Arrays.asList("properties",
"yaml", "yml");
- @Autowired
+ private NacosPropertySourceBuilder nacosPropertySourceBuilder;
+
private NacosConfigProperties nacosConfigProperties;
- public NacosPropertySourceLocator() {
+ public NacosPropertySourceLocator(NacosConfigProperties nacosConfigProperties) {
+ this.nacosConfigProperties = nacosConfigProperties;
}
- private NacosPropertySourceBuilder nacosPropertySourceBuilder;
-
@Override
public PropertySource> locate(Environment env) {
ConfigService configService = nacosConfigProperties.configServiceInstance();
if (null == configService) {
- LOGGER.warn(
- "no instance of config service found, can't load config from nacos");
+ log.warn("no instance of config service found, can't load config from nacos");
return null;
}
long timeout = nacosConfigProperties.getTimeout();
@@ -167,8 +165,7 @@ public class NacosPropertySourceLocator implements PropertySourceLocator {
private void loadNacosDataIfPresent(final CompositePropertySource composite,
final String dataId, final String group, String fileExtension,
boolean isRefreshable) {
-
- if (NacosContextRefresher.loadCount.get() != 0) {
+ if (NacosContextRefresher.getRefreshCount() != 0) {
NacosPropertySource ps;
if (!isRefreshable) {
ps = NacosPropertySourceRepository.getNacosPropertySource(dataId);
@@ -184,18 +181,22 @@ public class NacosPropertySourceLocator implements PropertySourceLocator {
fileExtension, isRefreshable);
composite.addFirstPropertySource(ps);
}
-
}
private static void checkDataIdFileExtension(String[] sharedDataIdArry) {
StringBuilder stringBuilder = new StringBuilder();
- outline: for (int i = 0; i < sharedDataIdArry.length; i++) {
+ for (int i = 0; i < sharedDataIdArry.length; i++) {
+ boolean isLegal = false;
for (String fileExtension : SUPPORT_FILE_EXTENSION) {
if (sharedDataIdArry[i].indexOf(fileExtension) > 0) {
- continue outline;
+ isLegal = true;
+ break;
}
}
- stringBuilder.append(sharedDataIdArry[i] + ",");
+ // add tips
+ if (!isLegal) {
+ stringBuilder.append(sharedDataIdArry[i] + ",");
+ }
}
if (stringBuilder.length() > 0) {
diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/refresh/NacosContextRefresher.java b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/refresh/NacosContextRefresher.java
index 28a1d47e..1fc7e8b0 100644
--- a/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/refresh/NacosContextRefresher.java
+++ b/spring-cloud-alibaba-nacos-config/src/main/java/org/springframework/cloud/alibaba/nacos/refresh/NacosContextRefresher.java
@@ -19,6 +19,7 @@ package org.springframework.cloud.alibaba.nacos.refresh;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.event.ApplicationReadyEvent;
@@ -51,10 +52,10 @@ import java.util.concurrent.atomic.AtomicLong;
public class NacosContextRefresher
implements ApplicationListener, ApplicationContextAware {
- private final static Logger LOGGER = LoggerFactory
+ private final static Logger log = LoggerFactory
.getLogger(NacosContextRefresher.class);
- public static final AtomicLong loadCount = new AtomicLong(0);
+ private static final AtomicLong REFRESH_COUNT = new AtomicLong(0);
private final NacosRefreshProperties refreshProperties;
@@ -110,7 +111,7 @@ public class NacosContextRefresher
listener = new Listener() {
@Override
public void receiveConfigInfo(String configInfo) {
- loadCount.incrementAndGet();
+ refreshCountIncrement();
String md5 = "";
if (!StringUtils.isEmpty(configInfo)) {
try {
@@ -120,16 +121,15 @@ public class NacosContextRefresher
}
catch (NoSuchAlgorithmException
| UnsupportedEncodingException e) {
- LOGGER.warn("[Nacos] unable to get md5 for dataId: " + dataId,
+ log.warn("[Nacos] unable to get md5 for dataId: " + dataId,
e);
}
}
refreshHistory.add(dataId, md5);
applicationContext.publishEvent(
new RefreshEvent(this, null, "Refresh Nacos config"));
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Refresh Nacos config group{},dataId{}", group,
- dataId);
+ if (log.isDebugEnabled()) {
+ log.debug("Refresh Nacos config group{},dataId{}", group, dataId);
}
}
@@ -149,4 +149,11 @@ public class NacosContextRefresher
}
}
+ public static long getRefreshCount() {
+ return REFRESH_COUNT.get();
+ }
+
+ public static void refreshCountIncrement() {
+ REFRESH_COUNT.incrementAndGet();
+ }
}