spring cloud使用nacos配置中心
nacos配置中心用于存储项目中相关配置,使用配置中心可以达到配置统一管理,动态刷新配置等效果。
nacos配置中心使用比较简单,但坑也不少,先简单介绍下使用再说坑。
1.引入spring cloud使用nacos配置中心的jar,spring boot 相关jar自己引一下。
<!-- 引入 spring-cloud-starter-alibaba-nacos-config,此jar要与spring boot版本对应--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.4.RELEASE</version> </dependency>
2.nacos创建创建命名空间,使用默认的也行。
3.编写配置文件由于nacos在项目初始化时需要先拉取配置才能保证项目启动,bootstrap优先级高于application所以配置文件名需要设置为bootstrap.yml。
spring: cloud: nacos: config: server-addr: ip:端口 #nacos地址 file-extension: yml #data-id后缀 namespace : 9fc4a992-12e4-45dc-87c8-316e8abd2cf5 # 命名空间,可区分不同项目或环境 refresh : true #开启自动刷新开启后不需要使用@RefreshScope注解 encode : UTF-8 #编码方式 prefix : test #data-id前缀,prefix-当前环境spring.profile.active-file -extension构成data-id。spring.profile.active-file可为空 group : dev #分组,区分环境 username : nacos password : nacos
4.登录nacos,将配置文件放入nacos。例如第三步中配置在nacos中应该建data-id为test.yml,group为dev的配置文件。新建的配置文件存储在config_info表中。
5.写个接口测试下
@Value("${nacos.config}") private String config; //直接value注解引入就可以
使用nacos中发现了两个坑
1.spring-cloud-starter-alibaba-nacos-config更新版本跟不上spring boot版本。高版本使用nacos完全用不了。
2.nacos支持读取环境变量获取配置,例如我在环境变量中设置SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR,则会覆盖配置文件中配置中心地址,不知道是不是我电脑问题,这个环境变量删除后使用echo打印还会展示出来,试了几次重启后有时候还会打印出来。而且nacos启动时会读取本地缓存配置LOCAL_SNAPSHOT_PATH:C:Usersadmin acosconfig。如果使用环境变量方式配置,并想切换配置中心需要删除环境变量重启,再删除本地缓存。