一、本地使用nacos
1. 下载nacos安装包
2.0.1是最新版,1.4.2是稳定版
2. 启动nacos服务
本地直接启动该文件会报错,要将启动模式从集群修改为单机
setMODE='standalone'
磁盘(D:>ProgramFiles>nacos-server-2.0.1
O
搜索"bin
bin
nacos
类型
大小
名称
修改日期
文件夹
2021/6/216:40
logs
文件夹
2021/6/216:40
worK
文本文档
2021/6/216:42
OKB
derby.log
2020/5/1410:03
1KB
Windows命令脚本
shutdown.cmd
2021/3/1811:36
ShellScript
1KB
shutdown.sh
Windows命令脚本
4KB
2021/6/216:41
startup.cmd
2021/4/1916:55
5KB
ShellScript
startup.sh
3. 访问localhost:8848/nacos
账号密码:nacos/nacos
4. 新增配置项
将application.properties需要隐藏的数据拷贝到配置内容中,例如将数据库连接的用户名密码配置到nacos
5. 引入nacos依赖
<dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.2.1</version></dependency>
6. 加上注解使用
dataId是配置信息中的Data ID
@NacosPropertySource(dataId="mysql.properties")
注意:如果不连接外置数据库,那么所有的配置信息都保存在data文件下。
二、服务器使用nacos
由于将配置信息放到data文件下会存在误删等风险,所以考虑将配置信息持久化到数据库中
1. 安装
2. 配置
2.1 配置单机模式
# /bin/startup.shexportMODE="standalone"
2.2 新建nacos配置库(目前只支持MySQL),执行初始化脚本/conf/nacos-mysql.sql
2.3 修改数据库连接配置
# /conf/application.properties ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=123456
3. 启动
# /bin目录下执行sh startup.sh
4. 新增配置项
配置项命名规范如下: ${prefix}-${spring.profile.active}.${file-extension}prefix:对应项目名称 spring.application.name spring.profile.active:对应环境 dev/test/prod等 file-extension:对应配置文件类型 properties/yml等
5. 项目中配置nacos
5.1 引入nacos依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.4.RELEASE</version></dependency>
5.2 在bootstrap.yml配置nacos服务器
使用spring cloud时,配置信息是从nacos server加载的,为了获取到配置信息,必须要提前配置,bootstrap.yml的加载比application.yml早,因此需要将nacos的信息放到bootstrap优先加载。
spring application name test-demo cloud nacos config file-extension properties server-addr localhost8848
注意:如果项目中动态刷新nacos配置,使用@RefreshScope注解即可