springboot读取nacos配置文件,读取nacos配置文件
00-1010先决条件启动配置管理注入配置同步配置注意:使用SpringCloud开发微服务时,经常会遇到一些比较小的后台参数配置,不足以单独打开一个表来存储,其他服务会读取这个参数。比如IP白名单。这时候用Nacos保存和读取就更方便了。
00-1010从SpringCloud项目开始Nacos
00-1010添加依赖关系:
依赖关系groupIdcom.alibaba.cloud/groupId artifactid spring-Cloud-Starter-Alibaba-Nacos-Config/artifactid Version $ { latest . Version }/Version/dependency注意:2.1.x.RELEASE对应Spring Boot 2.1.x的2.1.x版本2.0.x.RELEASE对应Spring Boot 2.0.x版本1.5.x版本对应Spring Boot 2.0 . x的1.5.x版本
参考:Nacos发行说明Wiki
在微服务的配置中配置Nacos服务器的地址和应用名称。
:应用3360名称3360服务-XXX云: nacos 3360配置3360服务器-addr : $ { spring . cloud . nacos . discovery . server-addr }文件扩展名3360 YAML描述:
之所以需要配置spring.application.name,是因为它是Nacos配置管理的dataId字段的一部分。
在Nacos Spring Cloud中,dataId的完整格式如下:
$ { prefix }-$ { spring . profiles . active }。$ {file-extension}前缀默认为spring.application.name的值,也可以通过配置项spring . cloud . nacos . config . prefix进行配置,Spring.profiles.active是当前环境对应的配置文件。有关详细信息,请参考Spring Boot文档。注意:当spring.profiles.active为空时,对应的连接器-将不存在,dataId的拼接格式变为${prefix}。$ {文件扩展名}
file-exe extent是配置内容的数据格式,可以通过配置项spring . cloud . nacos . config . file-extension进行配置。目前仅支持属性和yaml类型。
00-1010根据上述内容将Nacos配置为配置中心后,您可以通过在配置类上添加SpringCloud的本机注释来开始自动从Nacos获取值,例如
@Value直接注入变量值@ConfigurationProperties将几个变量集成到一个Properties类注意:
要启用Nacos变量变化的自动同步,您需要向注入变量的类添加@RefreshScope注释。
Nacos还提供了自己独特的注释。
云批注Nacos Spring批注备注@ value @ nacosvalue auto-refreshed @ configuration properties @ nacosconfigurationproperties ATO-refreshed,@NacosProperty设置某个属性,@NacosIgnore Nacos忽略该值。一般来说,我们在注入变量的时候,都是放在微服务的配置文件里,比如application.yaml但是有时候,我们想把一些配置单独保存为一个nacos配置,也就是有一个独立的dataId。这时候就需要用ex了。
tension-configs例如,有如下配置:
@Component@RefreshScope@ConfigurationProperties(prefix = "test")public class TestProperties { private List<String> whiteList; public List<String> getWhiteList() { return whiteList; } public void setWhiteList(List<String> whiteList) { this.whiteList = whiteList; }}我们想在nacos上创建一个
test.properties
的配置存放该Properties的值,那么就需要修改微服务的配置文件:
spring: application: name: service-xxx cloud: nacos: config: server-addr: ${spring.cloud.nacos.discovery.server-addr} file-extension: yaml extension-configs[0]: data-id: test.properties refresh: true
extension-configs[n]
可以增加多个,每一个包含三个配置: data-id
独立的data-id
,必须以properties
或yaml
结尾,不受spring.cloud.nacos.config.file-extension
影响group
该配置独立的group
refresh
是否启用自动刷新,默认false
这样,就实现了独立的配置文件的nacos配置和其值自动更新。
同步配置
在上面的基础上,我们再增加一个功能:微服务从本地修改变量值,并上传到nacos,其他相同微服务实例,取值时都会拿到相同值,那就需要调用nacos的原生APINacosConfigManager
了
//将本地配置推送到NacosconfigManager.getConfigService().publishConfig("test.properties", "DEFAULT_GROUP", contentToString(ConfigType.PROPERTIES));//从Nacos拉取配置configManager.getConfigService().getConfig("test.properties", "DEFAULT_GROUP", 100l)
注意:
1.假设当前微服务有两个实例: A和B,我们在A上,通过publishConfig
将TestProperties
的值更新到了Nacos,那么另一个实例B,会收到Nacos的通知,从nacos获取到最新的值,但是,这中间会有一个毫秒级的延迟。 2.Nacos也提供了例如@NacosInject
、ConfigService
等API,但是这些API只能在SpringBoot中使用,在SpringCloud中是无法直接使用的。
到此这篇关于SpringCloud使用Nacos保存和读取变量的文章就介绍到这了,更多相关SpringCloud使用Nacos保存和读取变量内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。