本文介绍Springboot集成Nacos做配置中心。
官方对配置中心的解释:
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
了解一下几个Nacos新名词:命名空间、GROUP、Data ID
- 命名空间
解决多环境及多租户数据的隔离问题 在多套不同的环境下,可以根据指定的环境创建不同的Namespace,实现多环境的数据隔离。 Nacos中默认提供的命名空间则是public。
- GREOUP
Nacos 中的一组配置集,是组织配置的维度之一,简单的说则是不同的系统或微服务的配置文件可以放在一个组里。 Nacos如果不指定Group,则默认的分组是DEFAULT_GROUP。
- Data ID
dataId是一个配置的唯一标识。 格式:{spring.profiles.active}.${file-extension}
一、未使用Nacos前实现方式
1. application.yml
#自定义参数
datasource:
url: localhost:3306
username: syx
password: root
2. @Value 注入参数
@Configuration
@Data
public class DataSourceConfig {
@Value("${datasource.url}")
private String url;
@Value("${datasource.username}")
private String username;
@Value("${datasource.password}")
private String password;
}
3. 测试接口
@RequestMapping("/get")
public String getMessage(){
return "url:" + dataSourceConfig.getUrl() + "</br>username:" + dataSourceConfig.getUsername() + "</br>password:" + dataSourceConfig.getPassword();
}
#返回数据
url:localhost:3306
username:syx
password:root
二、集成Nacos作为配置中心
1. 在nacos页面新建配置文件:common.yml(本人dev空间)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
2. 工程引入依赖
<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>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3. 新增bootstrap.yml配置文件
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
namespace: 780fdaa2-5e63-4bc4-aa42-8f91072a953f
group: DEFAULT_GROUP
file-extension: yml
refresh-enabled: true
prefix: common
注意:不能使用原来的application.yml作为配置文件,而是新建一个bootstrap.yml作为配置文件 配置文件优先级(由高到低): bootstrap.properties > bootstrap.yml > application.properties > application.ym
配置说明:
- spring.cloud.nacos.config.server-addr 配置nacos服务的地址
- spring.cloud.nacos.config.namespace 配置命名空间(填入前面新建的命名空间ID)
- spring.cloud.nacos.config.group 配置分组
- spring.cloud.nacos.config.file-extension 配置文件后缀,用于拼接配置配置文件名称
- spring.cloud.nacos.config.refresh-enabled 配置自动刷新
- spring.cloud.nacos.config.prefix 配置文件的前缀
nacos会根据配置怎么找到对应的配置文件规则:prefix−{spring.profile.active}.${file-extension}
prefix表示配置文件前缀,默认是spring.application.name的值,如果配置了spring.cloud.nacos.config.prefix就取prefix的值
spring.profile.active 表示项目使用的profile.active配置,没有则配置文件中没有此段名称
file-extension 表示配置文件的后缀,目前只支持yml和properties
所以如上配置得到的配置文件名称为:common.yml,也就是说你的nacos对应的命名空间下必须要有一个dataId为common.yml的配置,才能被读取到,要不然就无法读到配置
官方参考demo:Nacos Spring Cloud 快速开始
springboot/springcloud 集成 Nacos demo:springboot-nacos gitee地址