From 1525b2855f246a8275a2bd7a79cb75e294424f44 Mon Sep 17 00:00:00 2001 From: lyuzb Date: Mon, 12 Aug 2019 22:54:15 +0800 Subject: [PATCH 1/3] fix #831 --- .../cloud/nacos/NacosConfigProperties.java | 24 +++++++++++++++++++ .../cloud/nacos/NacosDiscoveryProperties.java | 10 +++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/NacosConfigProperties.java b/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/NacosConfigProperties.java index 78f2df83..dbab321a 100644 --- a/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/NacosConfigProperties.java +++ b/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/NacosConfigProperties.java @@ -30,9 +30,14 @@ import java.util.List; import java.util.Objects; import java.util.Properties; +import javax.annotation.PostConstruct; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.env.Environment; +import org.springframework.util.StringUtils; import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.config.ConfigService; @@ -43,6 +48,7 @@ import com.alibaba.nacos.api.config.ConfigService; * @author leijuan * @author xiaojing * @author pbting + * @author lyuzb */ @ConfigurationProperties(NacosConfigProperties.PREFIX) public class NacosConfigProperties { @@ -52,6 +58,24 @@ public class NacosConfigProperties { private static final Logger log = LoggerFactory .getLogger(NacosConfigProperties.class); + @Autowired + private Environment environment; + + @PostConstruct + public void init() { + this.overrideFromEnv(); + } + + private void overrideFromEnv() { + if (StringUtils.isEmpty(this.getServerAddr())) { + String serverAddr = environment.resolvePlaceholders("${spring.cloud.nacos.config.server-addr:}"); + if(StringUtils.isEmpty(serverAddr)) { + serverAddr = environment.resolvePlaceholders("${spring.cloud.nacos.server-addr}"); + } + this.setServerAddr(serverAddr); + } + } + /** * nacos config server address. */ diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java index 96bcc860..bd906fd9 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java @@ -57,6 +57,7 @@ import com.alibaba.nacos.client.naming.utils.UtilAndComs; * @author dungu.zpf * @author xiaojing * @author Mercy + * @author lyuzb */ @ConfigurationProperties("spring.cloud.nacos.discovery") @@ -64,7 +65,7 @@ public class NacosDiscoveryProperties { private static final Logger log = LoggerFactory .getLogger(NacosDiscoveryProperties.class); - + /** * nacos discovery server address. */ @@ -411,8 +412,11 @@ public class NacosDiscoveryProperties { public void overrideFromEnv(Environment env) { if (StringUtils.isEmpty(this.getServerAddr())) { - this.setServerAddr(env - .resolvePlaceholders("${spring.cloud.nacos.discovery.server-addr:}")); + String serverAddr = env.resolvePlaceholders("${spring.cloud.nacos.discovery.server-addr:}"); + if(StringUtils.isEmpty(serverAddr)) { + serverAddr = env.resolvePlaceholders("${spring.cloud.nacos.server-addr}"); + } + this.setServerAddr(serverAddr); } if (StringUtils.isEmpty(this.getNamespace())) { this.setNamespace(env From 369e4f46859243068dbaef6c70b3ce47e98e3e21 Mon Sep 17 00:00:00 2001 From: lyuzb Date: Tue, 13 Aug 2019 13:30:09 +0800 Subject: [PATCH 2/3] add test for #831 --- ...PropertiesServerAddressBothLevelTests.java | 41 ++++++++++++++++ ...gPropertiesServerAddressTopLevelTests.java | 40 ++++++++++++++++ ...PropertiesServerAddressBothLevelTests.java | 45 ++++++++++++++++++ ...yPropertiesServerAddressTopLevelTests.java | 47 +++++++++++++++++++ 4 files changed, 173 insertions(+) create mode 100644 spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressBothLevelTests.java create mode 100644 spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressTopLevelTests.java create mode 100644 spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java create mode 100644 spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressBothLevelTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressBothLevelTests.java new file mode 100644 index 00000000..b0c8691c --- /dev/null +++ b/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressBothLevelTests.java @@ -0,0 +1,41 @@ +package com.alibaba.cloud.nacos; + +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import com.alibaba.cloud.nacos.endpoint.NacosConfigEndpointAutoConfiguration; + +/** + * @author lyuzb + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NacosConfigPropertiesServerAddressBothLevelTests.TestConfig.class, properties = { + "spring.cloud.nacos.config.server-addr=321,321,321,321:8848", + "spring.cloud.nacos.server-addr=123.123.123.123:8848" + }, webEnvironment = RANDOM_PORT) +public class NacosConfigPropertiesServerAddressBothLevelTests { + + @Autowired + private NacosConfigProperties properties; + + @Test + public void testGetServerAddr() { + assertEquals("NacosConfigProperties server address was wrong","321,321,321,321:8848", properties.getServerAddr()); + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class, + NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class }) + public static class TestConfig { + } +} diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressTopLevelTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressTopLevelTests.java new file mode 100644 index 00000000..7b625996 --- /dev/null +++ b/spring-cloud-alibaba-nacos-config/src/test/java/com/alibaba/cloud/nacos/NacosConfigPropertiesServerAddressTopLevelTests.java @@ -0,0 +1,40 @@ +package com.alibaba.cloud.nacos; + +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import com.alibaba.cloud.nacos.endpoint.NacosConfigEndpointAutoConfiguration; + +/** + * @author lyuzb + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NacosConfigPropertiesServerAddressTopLevelTests.TestConfig.class, properties = { + "spring.cloud.nacos.server-addr=123.123.123.123:8848" + }, webEnvironment = RANDOM_PORT) +public class NacosConfigPropertiesServerAddressTopLevelTests { + + @Autowired + private NacosConfigProperties properties; + + @Test + public void testGetServerAddr() { + assertEquals("NacosConfigProperties server address was wrong","123.123.123.123:8848", properties.getServerAddr()); + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class, + NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class }) + public static class TestConfig { + } +} diff --git a/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java new file mode 100644 index 00000000..a0f16153 --- /dev/null +++ b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressBothLevelTests.java @@ -0,0 +1,45 @@ +package com.alibaba.cloud.nacos; + +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import com.alibaba.cloud.nacos.NacosDiscoveryAutoConfiguration; +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientAutoConfiguration; + +/** + * @author lyuzb + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NacosDiscoveryPropertiesServerAddressBothLevelTests.TestConfig.class, properties = { + "spring.cloud.nacos.discovery.server-addr=321.321.321.321:8848", + "spring.cloud.nacos.server-addr=123.123.123.123:8848" + }, webEnvironment = RANDOM_PORT) +public class NacosDiscoveryPropertiesServerAddressBothLevelTests { + + @Autowired + private NacosDiscoveryProperties properties; + + @Test + public void testGetServerAddr() { + assertEquals("NacosDiscoveryProperties server address was wrong","321.321.321.321:8848", properties.getServerAddr()); + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + NacosDiscoveryClientAutoConfiguration.class, + NacosDiscoveryAutoConfiguration.class }) + public static class TestConfig { + } +} diff --git a/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java new file mode 100644 index 00000000..26095534 --- /dev/null +++ b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/NacosDiscoveryPropertiesServerAddressTopLevelTests.java @@ -0,0 +1,47 @@ +package com.alibaba.cloud.nacos; + +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import com.alibaba.cloud.nacos.NacosDiscoveryAutoConfiguration; +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientAutoConfiguration; + +/** + * + * @author lyuzb + * + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NacosDiscoveryPropertiesServerAddressTopLevelTests.TestConfig.class, properties = { + "spring.cloud.nacos.server-addr=123.123.123.123:8848" + }, webEnvironment = RANDOM_PORT) + +public class NacosDiscoveryPropertiesServerAddressTopLevelTests { + + @Autowired + private NacosDiscoveryProperties properties; + + @Test + public void testGetServerAddr() { + assertEquals("NacosDiscoveryProperties server address was wrong","123.123.123.123:8848", properties.getServerAddr()); + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + NacosDiscoveryClientAutoConfiguration.class, + NacosDiscoveryAutoConfiguration.class }) + public static class TestConfig { + } +} From 02deb87ad31b0e67df4a065eb01469d3842cb3c4 Mon Sep 17 00:00:00 2001 From: lyuzb Date: Tue, 13 Aug 2019 14:42:57 +0800 Subject: [PATCH 3/3] add ide metadata json for #831 . --- .../additional-spring-configuration-metadata.json | 11 +++++++++++ .../additional-spring-configuration-metadata.json | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/spring-cloud-alibaba-nacos-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-alibaba-nacos-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 597126e8..c9c87261 100644 --- a/spring-cloud-alibaba-nacos-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-alibaba-nacos-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,5 +1,16 @@ { "properties": [ + { + "name": "spring.cloud.nacos.server-addr", + "type": "java.lang.String", + "description": "nacos server address." + }, + { + "name": "spring.cloud.nacos.config.server-addr", + "type": "java.lang.String", + "defaultValue": "${spring.cloud.nacos.server-addr}", + "description": "nacos config server address." + }, { "name": "spring.cloud.nacos.config.encode", "type": "java.lang.String", diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-alibaba-nacos-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 54c3f79f..2f0718f9 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-alibaba-nacos-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,4 +1,15 @@ {"properties": [ + { + "name": "spring.cloud.nacos.server-addr", + "type": "java.lang.String", + "description": "nacos server address." + }, + { + "name": "spring.cloud.nacos.discovery.server-addr", + "type": "java.lang.String", + "defaultValue": "${spring.cloud.nacos.server-addr}", + "description": "nacos discovery server address." + }, { "name": "spring.cloud.nacos.discovery.service", "type": "java.lang.String",