快速入门 Nacos 作为配置中心操作
1.前言
-
多个环境配置修改比较繁琐。 -
敏感配置直接暴露在配置文件中不安全。
-
在本地环境搭建单机版 Nacos 配置服务端 -
通过Alibaba Initializr 生成 SpringBoot 配置项目客户端 -
以及搭建过程中需要注意的事项
2.本地环境版本说明
-
SpringBoot Version: 2.1.2.RELEASE -
Apache Maven Version:3.6.0 -
JDK Version:1.8.0_144 -
SpringCloud Alibaba Version: 2.1.2.RELEASE -
Nacos-Client:1.1.4 -
IDEA:Intellij idea
3.搭建 Nacos服务端
3.1.根据官方文档进行安装
官方文档给出详细操作方式,具体跟着文档介绍安装即可。
3.2.针对不懂 Git同学简单方式
目前稳定版本是官方推荐的 1.1.4版本,个人也比较强烈建议选择这个版本。
Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows 启动命令:
cmd startup.cmd
或者双击startup.cmd运行文件。
4.搭建 Nacos配置客户端
4.1.通过 AlibabaInitializr生成客户端代码
-
注释掉 spring.cloud.nacos.config.contextPath=/nacos -
添加 spring.cloud.nacos.config.namespace= 命名空间ID -
将 application.properties 改为 bootstrap.properties -
添加 nacos-client 1.1.4版本依赖具体代码如下:
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.4</version>
</dependency>
也可不添加自定义命名空间配置,通过public 命令空间进行操作。
4.2.服务端添加配置项
-
Data Id:具体配置项的集合,可以理解为原先没有使用配置中心的配置文件。 -
Group:可以用于不同环境配置区分。创建开发环境分组和测试环境分组来区分开发环境和测试环境的配置。也可以用于将大的配置项拆分为多个小的配置。 -
命名空间:可以用于区分不同环境的配置也可以区分具体的项目。
关于Group和命名空间使用方式可以根据你具体业务进行灵活使用。
-
Data ID:应用名称.properties -
Group:使用默认项即可 -
配置格式:选择Properties ,官方提供的示例使用的是 application.properties 方式进行配置,你也可以选择yml 方式 -
配置内容:user.name=zhuoqianmingyue
SpringBoot 的应用名称 (即 spring.application.name=应用名称)和 Data ID 中的 .properties 前缀必须相同。即:Data ID为 demo.properties 那么spring.application.name= demo。
bootstrap.properties
配置文件中的
spring.cloud.nacos.config.namespace
配置项中。
bootstrap.properties
具体配置内容如下:
#################################### common config : ####################################
spring.application.name=demo
# 应用服务web访问端口
server.port=8080
# ActuatorWeb访问端口
management.server.port=8081
management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
# spring cloud access&secret config
spring.cloud.alicloud.access-key=****
spring.cloud.alicloud.secret-key=****
#################################### nacosconfig config : ####################################
# 微服务引擎控制台: https://mse.console.aliyun.com
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# nacos认证信息
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
#spring.cloud.nacos.config.contextPath=/nacos
spring.cloud.nacos.config.namespace=命名空间ID
# ----------配置中心,如果无需使用配置中心,可以删除此部分配置----------
spring.cloud.nacos.config.server-addr= localhost:8848
5.测试
@RestController
@RefreshScope
public class SampleController {
@Value("${user.name}")
String userName;
@Value("${user.age:25}")
int age;
@RequestMapping("/user")
public String simple() {
return "Hello Nacos Config!" + "Hello " + userName + " " + age + "!";
}
}
2020-05-01 22:15:51.693 INFO 34551 --- [9c-fe7ca50889a9] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [user.name]
2020-05-01 22:15:51.694 INFO 34551 --- [9c-fe7ca50889a9] c.a.nacos.client.config.impl.CacheData : [fixed-localhost_8848-1fa607c3-f205-46b8-979c-fe7ca50889a9] [notify-ok] dataId=demo.properties, group=DEFAULT_GROUP, md5=8f0b201d16b8e298e023a7440a676991, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@141367de
2020-05-01 22:15:51.694 INFO 34551 --- [9c-fe7ca50889a9] c.a.nacos.client.config.impl.CacheData : [fixed-localhost_8848-1fa607c3-f205-46b8-979c-fe7ca50889a9] [notify-listener] time cost=503ms in ClientWorker, dataId=demo.properties, group=DEFAULT_GROUP, md5=8f0b201d16b8e298e023a7440a676991, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@141367de