spring cloud alibaba - nacos配置中心&注册中心 实战
文章旨在 简单易懂,学习交流;文章中会尽量避免其他 关联内容;
其他关联的 微服务内容会单独 启动专题说明;也可留言,会第一时间解答,相互交流
非喜勿喷;
环境
版本 | |
---|---|
spring cloud alibaba | 2.2.7.RELEASE |
Nacos | 2.0.3 |
jdk | 11 |
maven | 3.6.3 |
Maven 依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--nacos-discovery 注册服务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Ailibaba Nacos Config nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
项目配置
spring:
application:
name: nacos-config
profiles:
active: dev
cloud:
# nacos 配置
nacos:
# 注册中心配置
discovery:
server-addr: localhost:8840,localhost:8842,localhost:8844 # Nacos 集群
namespace: bb84f64f-eaf7-4cf3-97b4-3d939ae1dce9 # 命名空间
# 配置中心
config:
server-addr: localhost:8840,localhost:8842,localhost:8844
namespace: bb84f64f-eaf7-4cf3-97b4-3d939ae1dce9
file-extension: yaml # 文件格式
# Nacos配置中心 的核心概念:
# 2.1、Data ID:
# (1)Data ID 的命名格式:
# 前面我们演示了在 nacos 控制台新建一个 DataID 为 cloud-producer-server-dev.yaml 的数据集,那么这个 Data ID 是什么呢?Data ID 是配置集的唯一标识,一个应用可以包含多个配置集,每个配置集都需要被一个有意义的名称标识。那么 Data ID 怎么取值呢?格式通俗一点就是 “前缀-环境-扩展名”,如下所示:
# ${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# ① prefix:前缀,默认是 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
# # 若不指定,默认采用应用名的方案
# spring.application.name=cloud-producer-server
# # 手动指定配置的dataID前缀标识
# # spring.cloud.nacos.config.prefix=cloud-producer-server-config
# ② active:配置运行环境,即为当前环境对应的 profile。
# 注意:当 spring.profiles.active 为空时,对应的连接符 ”-“ 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
# # dev表示开发环境
# spring.profiles.active=dev
# ③ file-exetension:配置文件的类型,默认是 properties,也可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前支持的类型有 TEXT、JSON、XML、YAML、HTML、Properties
# # 指定配置文件类型为yaml文件
# spring.cloud.nacos.config.file-extension=yaml
# ④ 最终配置:
# 经过前面三个步骤,我们最终在nacos配置中心的控制台新增配置文件就是:cloud-producer-server.yaml
nacos控制台 配置文件创建
- 具体配置内容
具体配置规则 结合 项目yaml 文件
# Nacos配置中心 的核心概念:
# 2.1、Data ID:
# (1)Data ID 的命名格式:
# 前面我们演示了在 nacos 控制台新建一个 DataID 为 cloud-producer-server-dev.yaml 的数据集,那么这个 Data ID 是什么呢?Data ID 是配置集的唯一标识,一个应用可以包含多个配置集,每个配置集都需要被一个有意义的名称标识。那么 Data ID 怎么取值呢?格式通俗一点就是 “前缀-环境-扩展名”,如下所示:
# ${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# ① prefix:前缀,默认是 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
# # 若不指定,默认采用应用名的方案
# spring.application.name=cloud-producer-server
# # 手动指定配置的dataID前缀标识
# # spring.cloud.nacos.config.prefix=cloud-producer-server-config
# ② active:配置运行环境,即为当前环境对应的 profile。
# 注意:当 spring.profiles.active 为空时,对应的连接符 ”-“ 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
# # dev表示开发环境
# spring.profiles.active=dev
# ③ file-exetension:配置文件的类型,默认是 properties,也可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前支持的类型有 TEXT、JSON、XML、YAML、HTML、Properties
# # 指定配置文件类型为yaml文件
# spring.cloud.nacos.config.file-extension=yaml
# ④ 最终配置:
# 经过前面三个步骤,我们最终在nacos配置中心的控制台新增配置文件就是:cloud-producer-server.yaml
测试
- 配置类
@Data
@Component
@ConfigurationProperties(prefix = "nacos.config.demo")
public class DemoConfig {
private String name;
}
- 测试接口
@RestController
@RequestMapping("/config")
public class ConfigController {
@Resource
private DemoConfig demoConfig;
@GetMapping("/demo")
public String getConfig(){
return demoConfig.getName();
}
}
- 执行接口
curl -X GET --location "http://localhost:50020/config/demo"
GET http://localhost:50020/config/demo
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 7
Date: Sun, 13 Nov 2022 06:41:21 GMT
Keep-Alive: timeout=60
Connection: keep-alive
xiaobai
Response code: 200; Time: 19ms (19 ms); Content length: 7 bytes (7 B)