1.添加Nacos Config依赖
打开nacos-config-demo的pom.xml文件并添加以下两个依赖项
项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容,如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置项和服务注册配置项。如果把这些配置项存放在配置中心,为了保证项目能够正常启动,就必须在数据源实例配置、服务注册流程之前读到所有配置项,因为类似数据源、日志工厂等实例的初始化和服务注册流程都是在项目启动过程中进行的。
基于这个原因,在服务的启动阶段就需要将连接Nacos配置中心的配置项加载优先级设置为最高。在Spring Boot规范中,bootstrap配置文件(bootstrap.yml或bootstrap.properties)用来引导程序时执行,应用于更加早期的配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的,其加载优先级高于application配置文件(application.yml或application.properties)。将连接Nacos配置中心的配置项放到bootstrap文件中,能够确保在启动阶段优先读取Nacos配置中心里存储的配置项。添加完依赖,接下来就要配置连接Nacos配置中心的参数了。
2.代码中配置Nacos Config连接参数
先在的resource目录下创建bootstrap.properties配置文件。然后在bootstrap.properties文件中添加一些连接Nacos配置中心的参数,代码及参数释义如下:
3.添加配置文件到Nacos配置中心
打开浏览器并进入Nacos控制台页面,如果没有配置自定义命名空间,就可以单击左侧导航栏中的“命名空间”按钮,打开“新建命名空间”对话框
在“新建命名空间”对话框中主要设置命名空间ID、命名空间名和描述。其中,命名空间ID就是连接配置中心的spring.cloud.nacos.discovery.namespace配置项和连接服务注册中心的spring.cloud.nacos.config.namespace配置项所要填写的值,笔者将其设置为dev。如果不设置,则会自动生成一个长度为36个字符的字符串。
单击左侧导航栏中的“配置列表”按钮,再切换到“开发环境”命名空间(dev)
单击配置管理页面右侧的“+”按钮,可以新建一项配置。在这里可以把原来在application.properties文件中的配置项存储到Nacos配置中心。
“新建配置”页面包含7个选项:Data ID、Group、标签、归属应用、描述、配置格式和配置内容,重要的选项释义如下。
(1)Data ID:配置的唯一标识,必填项。
(2)Group:指定配置文件的分组,这里设置默认分组DEFAULT_GROUP即可,必填项。
(3)描述:说明配置文件的用途,可不填。
(4)配置格式:指定“配置内容”的类型(文件后缀名),必填项。
(5)配置内容:程序运行所需的配置项列表,必填项。在“新建配置”页面中,笔者指定了Data ID为newbee-cloud-config-service-dev.properties、Group为自定义分组NEWBEE_CLOUD_DEV_GROUP、配置格式为Properties。在“配置内容”文本框中,笔者将端口号、注册中心连接配置项和数据库连接配置项添加了进去。
4.Data ID详解
Data ID在Nacos配置中心里是配置项的唯一标识符,用于标识一个配置项信息,并在客户端获取配置信息时使用。组成Data ID的完整参数如下:
其中,${prefix}默认为应用名称,即spring.application.name配置项的值;${spring.profiles.active}是当前选择的环境;${file-extension}是配置内容的数据格式,即配置文件的后缀名。当前项目的bootstrap.properties文件中已经对上述三个配置项做了配置:
因此,在拉取配置中心的配置时所读取的Data ID就是newbee-cloud-config-service-dev.properties,这也是在“新建配置”页面中笔者将Data ID指定为newbee-cloud-config-service-dev.properties的原因,并不是随意输入的。如果在Data ID中输入了其他字符串,则程序无法通过配置中心拉取正确的配置,启动阶段会直接报错。
如果spring.profiles.active配置项并未指定,则对应的连接符“-”也没了,Data ID的组成参数会变成${prefix}.${file-extension}。比如,本节中的演示代码,如果不指定spring.profiles.active配置项,则Data ID就是newbee-cloud-config-service-dev.properties。
另外,若不想使用应用名称作为prefix,可以使用spring.cloud.nacos.config.prefix进行自定义。比如,本节中的演示代码如果增加了一个配置项:
那么Data ID就是config-service-dev.properties。如果在Nacos配置中心没有新建config-service-dev.properties,则程序在启动时无法拉取配置信息,会直接报错。