diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml index 690d2031b..c6c66a83d 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml @@ -20,9 +20,10 @@ org.springframework.boot spring-boot-starter-actuator + - org.springframework.boot - spring-boot-starter-web + org.springframework.cloud + spring-cloud-starter-gateway @@ -33,10 +34,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery - - io.projectreactor - reactor-core - org.springframework.boot diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml index ce9ac30f5..22642a71c 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml @@ -6,11 +6,13 @@ spring: username: nacos password: nacos discovery: - server-addr: localhost:8848 + server-addr: 127.0.0.1:8848 + group: test gateway: discovery: locator: enabled: true + application: name: node-service sidecar: @@ -18,6 +20,7 @@ sidecar: ip: 127.0.0.1 # 异构微服务的端口 port: 8060 + # 异构微服务的健康检查URL #health-check-url: http://localhost:8060/health.json management: diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java index da4bd851b..cf5e79820 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java @@ -18,7 +18,6 @@ package com.alibaba.cloud.sidecar; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -28,7 +27,6 @@ import org.springframework.web.client.RestTemplate; * @author www.itmuch.com */ @Configuration(proxyBeanMethods = false) -@EnableConfigurationProperties(SidecarProperties.class) public class SidecarAutoConfiguration { @Bean diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java index 1ba5a381c..06448562e 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java @@ -17,12 +17,15 @@ package com.alibaba.cloud.sidecar.nacos; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration; import com.alibaba.cloud.sidecar.SidecarAutoConfiguration; import com.alibaba.cloud.sidecar.SidecarDiscoveryClient; +import com.alibaba.cloud.sidecar.SidecarProperties; import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -30,15 +33,24 @@ import org.springframework.context.annotation.Configuration; * @author www.itmuch.com */ @Configuration(proxyBeanMethods = false) -@AutoConfigureBefore(SidecarAutoConfiguration.class) -@ConditionalOnBean(NacosDiscoveryProperties.class) +@AutoConfigureBefore({ NacosDiscoveryAutoConfiguration.class, + SidecarAutoConfiguration.class }) +@ConditionalOnClass(NacosDiscoveryProperties.class) +@EnableConfigurationProperties(SidecarProperties.class) public class SidecarNacosAutoConfiguration { + @Bean + @ConditionalOnMissingBean + public SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties( + SidecarProperties sidecarProperties) { + return new SidecarNacosDiscoveryProperties(sidecarProperties); + } + @Bean @ConditionalOnMissingBean public SidecarDiscoveryClient sidecarDiscoveryClient( - NacosDiscoveryProperties nacosDiscoveryProperties) { - return new SidecarNacosDiscoveryClient(nacosDiscoveryProperties); + SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) { + return new SidecarNacosDiscoveryClient(sidecarNacosDiscoveryProperties); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java index 92bc65ebf..76d4e2803 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java @@ -16,7 +16,6 @@ package com.alibaba.cloud.sidecar.nacos; -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.sidecar.SidecarDiscoveryClient; import com.alibaba.nacos.api.exception.NacosException; import org.slf4j.Logger; @@ -30,18 +29,19 @@ public class SidecarNacosDiscoveryClient implements SidecarDiscoveryClient { private static final Logger log = LoggerFactory .getLogger(SidecarNacosDiscoveryClient.class); - private final NacosDiscoveryProperties nacosDiscoveryProperties; + private final SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties; public SidecarNacosDiscoveryClient( - NacosDiscoveryProperties nacosDiscoveryProperties) { - this.nacosDiscoveryProperties = nacosDiscoveryProperties; + SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) { + this.sidecarNacosDiscoveryProperties = sidecarNacosDiscoveryProperties; } @Override public void registerInstance(String applicationName, String ip, Integer port) { try { - this.nacosDiscoveryProperties.namingServiceInstance().registerInstance( - applicationName, nacosDiscoveryProperties.getGroup(), ip, port); + this.sidecarNacosDiscoveryProperties.namingServiceInstance().registerInstance( + applicationName, sidecarNacosDiscoveryProperties.getGroup(), ip, + port); } catch (NacosException e) { log.warn("nacos exception happens", e); @@ -51,8 +51,9 @@ public class SidecarNacosDiscoveryClient implements SidecarDiscoveryClient { @Override public void deregisterInstance(String applicationName, String ip, Integer port) { try { - this.nacosDiscoveryProperties.namingServiceInstance().deregisterInstance( - applicationName, nacosDiscoveryProperties.getGroup(), ip, port); + this.sidecarNacosDiscoveryProperties.namingServiceInstance() + .deregisterInstance(applicationName, + sidecarNacosDiscoveryProperties.getGroup(), ip, port); } catch (NacosException e) { log.warn("nacos exception happens", e); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java new file mode 100644 index 000000000..705c0d77a --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java @@ -0,0 +1,50 @@ +/* + * Copyright 2013-2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.cloud.sidecar.nacos; + +import java.net.SocketException; + +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.sidecar.SidecarProperties; + +import org.springframework.util.StringUtils; + +/** + * @author yuhuangbin + */ +public class SidecarNacosDiscoveryProperties extends NacosDiscoveryProperties { + + SidecarProperties sidecarProperties; + + public SidecarNacosDiscoveryProperties(SidecarProperties sidecarProperties) { + this.sidecarProperties = sidecarProperties; + } + + @Override + public void init() throws SocketException { + super.init(); + + String ip = sidecarProperties.getIp(); + if (!StringUtils.isEmpty(ip)) { + this.setIp(ip); + } + + Integer port = sidecarProperties.getPort(); + this.setPort(port); + } + +}