安装Nacos
下载安装包
- 从 最新稳定版本 下载
nacos-server-$version.zip
包。 - 解压安装包了,在
bin
目录下运行startup.cmd
- 访问
http://localhost:8848/nacos/#/login
即可进入nacos控制台中心,账号密码默认都是nacos
Nacos config
Spring Cloud Alibaba Nacos Config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
Nacos 服务端初始化
启动Nacos Server。启动方式可见 我的上一篇博客
客户端使用方式
1. 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 在resources文件夹新加一个bootstrap.properties配置文件
spring.application.name=mall_member <!-- 服务名 -->
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3. 在nacos后台控制中心新建一个命名空间
该步主要是为了将各微服务之间的配置隔离开来,各微服务配置各自的文件。
4. 在我们新建的命名空间中配置文件
5. 添加新配置文件
6. 项目中应用我们的配置文件
如为了应用第5中的多个配置文件,我们需要在服务中的bootstrap.properties接着配置如下内容
spring.application.name=mall_coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=279c8f44-b257-48df-b2d6-d1cd0d6b6d42 <!-- 需要使用的命名空间 -->
spring.cloud.nacos.config.group=dev <!-- 需要使用的组 -->
<!-- 其他配置 -->
spring.cloud.nacos.config.ext-config[0].data-id=datasources.yml <!-- 配置文件名称 -->
spring.cloud.nacos.config.ext-config[0].group=dev <!-- 配置文件所属的组 -->
spring.cloud.nacos.config.ext-config[0].refresh=true <!-- 是否自动刷新,如果此项为true,当我们修改配置中心的这个配置文件时,服务会自动应用 -->
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
9. 动态获取配置
需要添加注解
@RefreshScope //一般在Controller中添加,表示动态获取配置
@Value("${配置的key值}") //获取配置文件的值
8. 启动测试
重启项目,测试配置项是否应用上,可以测试更改配置内容,观察到无需重启服务也能应用上新的配置,这就是nacos的强大之处。