「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」
概念
首先理解Nacos到底是干什么的?
- 配置中心
- 服务注册中心
配置中心
所谓配置中心:一般SpringBoot项目都使用在resources下创建类似application.yml
之类的配置文件来管理整个项目的一些配置信息
- mysql、redis、es、mq等地址账号密码
- 业务场景信息
- 主站ip前缀
- 。。。。。。
那么就会有人想了,为啥要将这些本来是动态配置的信息写死在代码中呢。而且如果有人登陆上了服务器,获取了Jar文件,是不是就可以有了各种数据库的链接信息了呢。所以配置中心应运而生了。
通过一个配置平台来管理注册中心下所有的服务的配置文件信息,也就是说以后服务不需要去resource中获取相应需要的配置信息了,直接去这个服务中获取即可
优点:
- 灵活配置
- 统一管理
- 权限控制
- ……
Nacos-client使用配置中心
- 创建一个SpringBoot项目
- 导入相关的依赖
- 增加基本的配置信息
- 修改启动类
- 新增测试类
初始化项目
基于SpringBoot的所需依赖及注意事项
1 | xml复制代码 <dependencies> |
基础配置信息
bootstrap.yml,在存在该文件时,会优先加载改文件数据,bootstrap的意思是“引导程序”
1 | yaml复制代码spring: |
基础启动类
1 | java复制代码@SpringBootApplication |
基础测试验证类
1 | java复制代码@RestController |
注意此时yml配置文件中并不能获取到${config.info}。所以为了启动不报错,需要提前在配置中心的页面中进行数据配置
。
启动服务
在浏览器中调用localhost:8080/config/info
接口,获取到配置中心配置的数据即表示无误
dataId
dataId=prefix−{prefix}-prefix−{spring.profile.active}.${file-extension}
其中profix默认为${spring.application.name}
file-extension表示配置的类型,默认为properties。与页面上相呼应!
如果没有指定spring.profile.active,那么dataId就变成了profix.{profix}.profix.{file-extension}
- 启动时会发现启动日志中会打出多个,
- ${prefix}
- prefix−{prefix}-prefix−{spring.profile.active}
- prefix−{prefix}-prefix−{spring.profile.active}.${file-extension}。说明其实是可以匹配配置中心中配置的多条配置名称
- 匹配优先级是:3>2>1,精确匹配
遇到的问题:
- Error creating bean with name ‘configurationPropertiesBeans‘ defined in class path resource
- 「nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘config.info’ in value “${config.info}”」配置中心指定的配置与测试中注入的配置信息不一致
本文转载自: 掘金