admin 管理员组文章数量: 1087135
2024年4月30日发(作者:太极拳教学)
nacos 动态配置
一、前言
使用动态配置的原因: properties 和 yaml 是写到项目中的,好多
时候有些配置需要修改,每次修改就要重新启动项目,不仅增加了系统的
不稳定性,也大大提高了维护成本,非常麻烦,且耗费时间。
使用动态配置,则可以避免这些麻烦,可以动态的修改配置,不需要
重新启动项目。
本次环境使用版本:NACOS1.4.2; spring-boot E;
nacos-config-spring-boot-starter 0.2.1
二、在 nacos 上创建配置文件
2.1在默认命名空间中,创建一个配置文件
2.2配置说明:
Data ID —— 用于项目读取名称,spring-nacos 动态配置命名规范
为 :{prefix}-{}.{file-extension}
prefix 默认为 的值,也可以通过配置项
来配置。
即为当前环境对应的 profile,就是环境
的命名,比如 test 环境, dev 环境; 可以为
空,为空着不区分环境信息,dataId 的拼接格式变成 {prefix}.{file-
extension}。
file-exetension 为配置内容的数据格式,一般常用 properties 和
yaml 类型。
说明:
我这次修改的项目是网关,项目名称 :gateway
(= gateway)
没有使用环境配置
所以 nacos 的配置文件为: {prefix}.{file-extension} 即
如果有配置环境的,可以为 {prefix}-
{}.{file-extension} 即
本次配置文件名称为
注意: 项目启动时,nacos-config 会自动加载以下文件,故以下文
件名称都可以作为默认动态配置的文件格式。
,,icp-gateway,(说明,
这三个文件,可以指定命名 nacos 分组)
添加测试使用的配置 nacosConfigDemmo: NAME1
说明: 本次配置项目,分组名称为 ICP_PLATFORM (注意:分组名
称建议使用下划线 _ ,不建议使用 中横线 - ,中横线会有几率出现不
能读取的问题,使用连接符请注意使用;分组名可以自定,如果要区分命
名空间,需要到 nacos 命名空间 中新建 命名空间)。
2.3发布并检查配置文件
点击确定,然后点击返回配置中心,在配置列表中能找到自己的配置
文件,确保文件内容正确即可
至此,配置文件完成,接下来在项目中使用这个配置文件。
三、修改修改项目配置,动态读取配置文件
3.1 添加 nacos 动态配置依赖
在 文件中,添加依赖。
修改项目配置文件,读取 nacos 中的配置内容
#指定启动端口
server:
port: 7200
spring:
application:
#指定服务名称
name: gateway
# 项目运行环境,可以搭配在 nacos 动态配置文件名上面,不同环
境使用不同的动态配置
profiles:
active: dev
cloud:
config:
server-addr: 127.0.0.1:8848 #nacos 的注册地址
file-extension: yml #动态配置文件的 格式。就是 nacos 中的动
态配置,这里是 yml
group: ICP_PLATFORM #nacos 动态配置的分组,要与 nacos 配置
文件保持一致
# namespace: #namespace 是nacos 的命名空间,我这儿
是默认空间,就不配置了 。
3.2 在 controller 与 service 中使用动态配置
controller 代码:
service 接口代码:
public interface IIndexService 。
Object showDemoName(;
}
service 实现代码:
运行,请求接口地址,得到响应值:
postman 请求,第一次响应,值为 NAME2
修改 nacos 配置文件,将 nacosConfigDemmo: NAME1 改为
nacosConfigDemmo: NAME2 并发布
等待控制台打印: Refresh keys changed: [nacosConfigDemmo],
则动态配置已经生效
再次请求,发现返回值已经改变:
请求结果,NAME1已经变成NAME2,项目不需要重启,动态配置已经
生效。
四、动态配置网关的使用
4.1导入配置,网关不进行权限校验的路径
获取配置文件,生成 bean
配置文件实体类
版权声明:本文标题:nacos 动态配置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1714433196a679996.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论