Nacos服务端下载及启动
下载地址:https://gitee.com/mirrors/Nacos
下载后打包,windows直接双击bin目录下的startup.cmd文件启动
访问地址:ip:8848/nacos
登录账号密码:nacos nacos
Nacos配置中心
客户端pom配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
properties文件配置
配置文件得是boostrap.properties,不能是application.properties
nacos服务端先添加一个配置文件
####################################################
# nacos配置中心
####################################################
#spring.application.name=we
spring.cloud.nacos.config.file-extension=properties
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=a7fe434b-021e-42d0-b4ca-6ab9b6ab9d1d
spring.cloud.nacos.config.group=WE_GROUP
spring.cloud.nacos.config.name=we.properties
spring.cloud.nacos.config.refresh-enabled=true
# 主配置 最大重试次数
spring.cloud.nacos.config.max-retry=10
java代码测试动态刷新配置
测试代码:
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class TestConfigController {
@Autowired
private ConfigurableApplicationContext applicationContext;
@RequestMapping("test1")
public String test1() {
String value1 = applicationContext.getEnvironment().getProperty("we.77");
System.out.println(value1);
return value1;
}
@Value("${we.77}")
private String value2;
@RequestMapping("test2")
public String test2() {
System.out.println(value2);
return value2;
}
}
网页访问ip:port/nacos-client/test1
ip:port/nacos-client/test2
这两种方式都能动态刷新
Nacos服务注册与发现
properties文件配置
####################################################
# nacos服务注册与发现
####################################################
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#服务名称
spring.cloud.nacos.discovery.service=nacos-cosumer
spring.cloud.nacos.discovery.group=WE_GROUP
spring.cloud.nacos.discovery.namespace=a7fe434b-021e-42d0-b4ca-6ab9b6ab9d1d
#取值范围 1 到 100,数值越大,权重越大
#spring.cloud.nacos.discovery.weight=1
启动类配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
测试代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class TestDiscoveryController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/discovery")
public String echoAppName(){
//使用 LoadBalanceClient 和 RestTemolate 结合的方式来访问
ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-cosumer");
String url = serviceInstance.getHost()+ ":" +serviceInstance.getPort()+ "/" + serviceInstance.getServiceId();
return url;
}
}
网页访问:ip:port/nacos-client/discovery