Nacos 配置文件中心
使用 Spring Cloud Alibaba Nacos Config,可基于 Spring Cloud 的编程模型快速接
入 Nacos 配置管理功能
2.1 创建项目选择依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.2 在 NacosServer 里面添加一个配置文件
2.3 查看上一讲中创建的数据库中的信息
2.4 config-client-a 项目中添加一个配置文件 bootstrap.yml
yserver:
port: 8081
spring:
application:
name: nacos-config-a
# 项目在启动的时候去哪里找它对应的配置文件呢??
cloud:
nacos:
config:
server-addr: localhost:8848
username: nacos
password: nacos
prefix: nacos-config-a # 读哪个配置文件 默认用的是应用名称 是可以修改的
file-extension: yml # 文件类型
# namespace: 默认
# group: 默认
# profiles:
# active: dev
2.5 config-client-a 中添加一个实体类 Hero
package com.example.nacosconfiga.config;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@RefreshScope // 给这个类上 添加一个刷新的作用域
public class Hero {
@Value("${hero.name}")
private String name;
@Value("${hero.age}")
private Integer age;
@Value("${hero.address}")
private String address;
}
2.6 config-client-a 中添加一个测试类 Controller
package com.example.nacosconfiga.controller;
import com.example.nacosconfiga.config.Hero;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
public Hero hero;
@GetMapping("info")
public String heroInfo() {
return hero.getName() + ":" + hero.getAge() + ":" + hero.getAddress();
}
}
2.8 测试配置文件的动态刷新
修改配置文件,不需要重启,直接请求 http://localhost:8080/heroInfo 查看结果已经刷新了
3.配置文件的读取方式【重点
nacos 配置中心通过 namespace、dataId 和 group 来唯一确定一条配置。
- Namespace:即命名空间。默认的命名空间为 public,我们可以在 Nacos 控制台中新建
命名空间;
-
dataId:即配置文件名称
-
Group : 即 配 置 分 组 , 默 认 为 DEFAULT_GROUP , 可 以 通 过
spring.cloud.nacos.config.group 配置。
其中:dataId 是最关键的配置字段:格式如下
${prefix} - ${spring.profiles.active} . $
- prefix 默 认 为 spring.application.name 的 值 , 也 可 以 通 过 配 置 项
spring.cloud.nacos.config.prefix 来配置;
- spring.profiles.active 即 为 当 前 环 境 对 应 的 profile 。 注 意 , 当
spring.profiles.active 为空时,对应的连接符-也将不存在,dataId 的拼接格式变
成\({prefix}.\){file-extension};
- file-extension 为 配 置 内 容 的 数 据 格 式 , 可 以 通 过 配 置 项
spring.cloud.nacos.config.file-extension 来配置。
这就是上面我们为什么能获得到配置的原因了。
注意:在写 dataId 的时候一定要添加文件类型后缀
Eg: nacos-config-dev.yml
如果prefix和配置中心的名字一样,不管加不加active都不会拼接,如果是拼接了active才和配置中心的一样就要加后缀
5.获取多配置文件
除了通过上面的方式指定一个唯一配置外,我们还可以同时获取多个配置文件的内容。
提供这个功能 可以再次封装和抽象配置文件管理
5.1 在 Nacos 中新建两个配置文件
在 powernode 命名空间,继续点击添加两个配置文件
**5.2 **修改 config-client-a 项目的配置文件
server:
port: 8082
spring:
application:
name: nacos-config-test
cloud:
nacos:
config:
server-addr: localhost:8848
username: nacos
password: nacos
namespace: c52e715f-3f00-4ad8-803b-9c8dba19a221 # 目前读取多配置文件的方式只支持在同一个命名空间下
file-extension: yml
extension-configs: # 可以读多个配置文件 需要在同一个命名空间下面 可以是不同的组
- dataId: user-center-dev.yml
group: A_GROUP
refresh: true
- dataId: member-center-dev.yml
group: B_GROUP
refresh: false # 不去动态刷新配置文件
profiles:
active: dev
说明:
- spring.cloud.nacos.config.extension-configs[n].dataId , 指 定 多 个 配 置 的
dataId,必须包含文件格式,支持 properties、yaml 或 yml;
-
spring.cloud.nacos.config.extension-configs[n].group,指定分组;
-
spring.cloud.nacos.config.extension-configs[n].refresh,是否支持刷新。
上面的配置中,我们分别从 DEFAULT_GROUP 中获取了 config-a.yml 和 config-b.yml 配置
内容,并且 config-a.yml 支持刷新,config-b.yml 不支持刷新。
注意:
没有 namespace 的配置,言外之意就是 Nacos 目前还不支持多个配置指定不同的命名空间。
5.3 共享配置文件
server:
port: 8082
spring:
application:
name: nacos-config-test
cloud:
nacos:
config:
server-addr: localhost:8848
username: nacos
password: nacos
namespace: c52e715f-3f00-4ad8-803b-9c8dba19a221 # 目前读取多配置文件的方式只支持在同一个命名空间下
group: A_GROUP
prefix: user-center
file-extension: yml
shared-configs: # 共享配置文件
# - application-dev.yml # 这里可以写共享的文件名称 只能在DEFAULT_GROUP
- dataId: application-dev.yml # 这两种写法都可以
group: C_GROUP
refresh: true
profiles:
active: dev
6.Spring Cloud Alibaba Nacos Config 常用的配置
7.两端的配置文件写什么内容
本地的 bootstrap.yml(应用名称,配置文件中心(注册中心地址),读取的配置文件名称信
息)
远端的配置文件(端口,数据源,redis,mq,mybatis,Swagger...)
标签:配置文件,Config,Nacos,nacos,spring,config,yml,cloud From: https://www.cnblogs.com/firsthelloworld/p/17439909.html