专业的编程技术博客社区

网站首页 > 博客文章 正文

Nacos读取配置文件的顺序

baijin 2025-01-05 15:39:38 博客文章 9 ℃ 0 评论

pom.xml添加如下,spring-boot版本2.6.3

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.6.3</version>
	<relativePath/> 
</parent>
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-bootstrap</artifactId>
		<version>3.0.3</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-dependencies</artifactId>
		<version>2021.0.1</version>
		<type>pom</type>
		<scope>import</scope>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-alibaba-dependencies</artifactId>
		<version>2021.0.1.0</version>
		<type>pom</type>
		<scope>import</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-dependencies</artifactId>
		<version>2.6.3</version>
		<type>pom</type>
		<scope>import</scope>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		<version>2021.0.1.0</version>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		<version>2021.0.1.0</version>
	</dependency>
</dependencies>

对应环境的yaml配置

spring:
  application:
    name: test-demo  #服务名
  cloud:
    nacos:
      config:
        enabled: true
        server-addr: #nacos地址
        namespace: #命名空间
        username: #nacos用户名
        password: #nacos密码
        file-extension: yaml  #指定文件后缀

从控制台打印日志可以看出,Nacos默认读取是以服务名test-demo,test-demo.yaml,test-demo-环境变量(我的是local).yaml等文件

如果不想用服务名作为文件名,那可以在Nacos配置中添加prefix,此次添加的是 prefix: helloworld,效果如下

Located property source: [BootstrapPropertySource {name='bootstrapProperties-test-demo-local.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-test-demo.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-test-demo,DEFAULT_GROUP'}]

日志显示读取配置文件的顺序,读取配置是这几个文件的并集,相同的属性前面的覆盖后面,大家可以自行添加配置测试一下看看效果。

注意,在配置过程中需要注意下配置文件的名字,如果是application.yaml或者application-环境.yaml,这个时候nacos配置的file-extension: yaml就不会生效,读取的总是.properties为后缀的配置,需要将配置文件名改为bootstrap.yaml,bootstrap-环境.yaml

最后贴一下Nacos读取配置的源码,有兴趣的可以断点调试下

com.alibaba.cloud.nacos.client.NacosPropertySourceLocator类

com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder类

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表