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。如果使用环境变量方式配置,并想切换配置中心需要删除环境变量重启,再删除本地缓存。

经验分享 程序员 微信小程序 职场和发展