构建配置中心
新建命名空间
登录 Nacos 面板,依次点击左侧菜单栏【命名空间→新建命名空间】、填写命名空间名和描述信息,点击【确定】:
新建配置文件
依次点击左侧菜单栏【配置管理→配置列表】、切换到指定命名空间【此处为 shop】、点击右侧【+】号:
添加配置
填写【Data ID】要求组内唯一,【Group】组名,【配置格式】以及【配置内容】,点击【发布】:
注:添加【Data ID】时要添加文件类型
新建项目
创建一个SpringBoot项目:
添加【Nacos Configuration】依赖:
<!--nacos 配置中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
修改配置文件
将配置文件【application.properties】重命名为【bootstrap.yml】,添加以下内容:
spring:
application:
name: user-service
profiles:
active: dev # 当前环境
cloud:
nacos:
#Nacos 配置中心
config:
server-addr: localhost:8848 # 配置中心地址
username: nacos # 账号
password: nacos # 密码
namespace: 6c3fb5a3-5f6e-485e-8b96-8aaa47baa217 # 命名空间
group: USER_GROUP # 组名
prefix: user-service-config # 读取的目标配置文件 DataID,默认{spring.application.name}
file-extension: yml
注:
需要配置
spring.application.name
,是因为它是构成 Nacos 配置管理dataId
字段的一部分。在 Nacos Spring Cloud 中,
dataId
的完整格式如下:${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
启动项目,查看控制台打印,可以看到项目以【USER_GROUP】分组下的【user-service-config-dev.yml】配置文件启动:
刷新
通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新:
@RefreshScope
@RestController
public class UserController {
@Value("${user.name}")
private String name;
@GetMapping("/userInfo")
public String getUserId(){
return "name:"+name;
}
}
回滚历史版本
依次点击【更多→历史版本】:
点击对应的【回滚】即可:
读取不同分组的配置文件
创建【DEFAULT_GROUP】分组下的【mybatis-plus-config.yml】配置文件:
创建【DEFAULT_GROUP】分组下的【mysql-config.yml】配置文件:
添加依赖:
<!--mybatis-plus 依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--mysql 依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid 依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
编写配置文件,读取三个不同分组的配置文件:
spring:
application:
name: user-service
cloud:
nacos:
#Nacos 配置中心
config:
server-addr: localhost:8848 # 配置中心地址
username: nacos # 账号
password: nacos # 密码
namespace: 6c3fb5a3-5f6e-485e-8b96-8aaa47baa217 # 多配置文件需要在同一命名空间
extension-configs: # 扩展的配置文件【List 集合】
- dataId: user-service-config.yml # 读取的目标配置文件 data id
group: USER_GROUP # 组名,默认 DEFAULT_GROUP
refresh: true # 是否刷新
- dataId: mybatis-plus-config.yml
refresh: true
- dataId: mysql-config.yml
refresh: true
file-extension: yml
启动项目,查看控制台打印,项目成功加载配置文件并成功启动:
Located property source: [BootstrapPropertySource {name='bootstrapProperties-user-service.properties,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-user-service,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-mysql-config.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-mybatis-plus-config.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-user-service-config.yml,USER_GROUP'}]
读取共用配置文件
只需修改上步的配置文件即可,项目启动时会读取【user-service-config.yml】以及和其他服务共享的配置文件:【mybatis-plus-config.yml,mysql-config.yml】:
spring:
application:
name: user-service
cloud:
nacos:
#Nacos 配置中心
config:
server-addr: localhost:8848 # 配置中心地址
username: nacos # 账号
password: nacos # 密码
namespace: 6c3fb5a3-5f6e-485e-8b96-8aaa47baa217 # 多配置文件需要在同一命名空间
prefix: user-service-config # 读取的目标配置文件 data id
group: USER_GROUP
file-extension: yml
shared-configs: # 共享的配置文件【List 集合】
- dataId: mybatis-plus-config.yml # 读取的目标配置文件 data id
refresh: true
- dataId: mysql-config.yml
refresh: true