nacos(1.4.1)客户端使用以及相关配置
nacos客户端使用gitee地址
1.目录结构
2.nacos服务端添加配置
默认用户名:nacos
默认密码:nacos
2.1添加命名空间
2.2根据服务名添加配置文件
注意:配置名称必须要加后缀 如bootstrap.yaml
3.工程maven依赖
父工程maven
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.13.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<!-- Spring Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.13.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
子工程maven
<dependencies>
<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-web</artifactId>
</dependency>
</dependencies>
4.配置文件(配置中心使用的配置文件名必须是bootstrap)
bootstrap.yaml
spring:
application:
name: config-nacos
cloud:
nacos:
config:
# nacos命名空间 不配置默认:public
namespace: 44973184-6499-41e8-96df-df48e2e8cf7c
# nacos客户端默认扩展名是properties,如果不进行配置是没有办法读到服务端为yaml的
file-extension: yaml
# 进行同一命名空间,设置不同的分组,(可以以项目名做分组),不配置默认:DEFAULT_GROUP
#group: qianjing
# 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
server-addr: 192.168.153.199:8848 # nacos服务器
username: nacos
password: nacos
当存在一些经常变动的配置时,可以添加spring.cloud.nacos.config.shared-configs、spring.cloud.nacos.config.extension-configs进行配置,我个人喜欢写在同一个配置中
例如:****
spring:
application:
name: config-nacos
cloud:
nacos:
config:
namespace: 44973184-6499-41e8-96df-df48e2e8cf7c
# nacos客户端默认扩展名是properties,如果不进行配置是没有办法读到服务端为yaml的
file-extension: yaml
# 进行同一命名空间,设置不同的分组
#group: qianjing
# 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
shared-configs:
- data-id: config-common.properties
# 配置文件发生变化,通知nacos客户端,true表示变化通知
refresh: true
# 默认分组可以不用写
#group: default-group
# 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
extension-configs[0]:
data-id: config-extension.properties
refresh: true
#group: default-group
server-addr: 192.168.153.199:8848
username: nacos
password: nacos
5.controller层接口
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope //用于动态感知配置user.name改变的注解,让我们的数据实时更新
public class ConfigController {
@Value("${user.name}")
private String username;
@GetMapping("/demo")
public String username() {
return username;
}
}
6.启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class , args);
}
}
7.启动项目测试
1.nacos注册成功
2.实时更新测试(不用重启项目)
更新前
更新后
修改config-nacos.yaml配置里面的user.name = config.nacos.yaml
注意:接口类有注解@RefreshScope