《SpringBoot系列二》:配置文件加载优先级(含服务注册中心nacos)

简介: 《SpringBoot系列二》:配置文件加载优先级(含服务注册中心nacos)

springboot配置文件的加载先后顺序

1、内部配置加载顺序:

springboot启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

  1. –file:./config/ --> jar包所在的目录的config目录下
  2. –file:./ --> jar包所在目录
  3. –classpath:/config/ --> jar包中的resources/config目录下
  4. –classpath:/ --> jar包中的resources目录下

SpringBoot官网:
在这里插入图片描述

优先级由高到底,高优先级的配置会覆盖低优先级的配置。

  • 如果低优先级存在高优先级没有的属性,则会互补配置。
  • 如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的

2、外部配置加载顺序:

SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置

(1)命令行参数 (加载时优先加载)
所有的配置都可以在命令行上进行指定( --配置)。
可以通过指定 --spring.config.location来改变默认的配置文件位置:

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.yml

多个配置用空格分开;格式为: --配置项=值

(2)来自java:comp/env的JNDI属性

(3)Java系统属性(在命令行中使用-D指定),可通过System.getProperties()获得相关内容

java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar

(4)操作系统环境变量

  • 大多数操作系统不允许使用句点分隔的键名,使用下划线代替(例如,SPRING_CONFIG_NAME代替spring.config.name)

(5)RandomValuePropertySource配置的random.*属性值

(6)jar包外部的application-{profile}.properties或application-{profile}.yml(带spring.profile)配置文件。

(7)jar包内部的application-{profile}.properties或application-{profile}.yml(带spring.profile)配置文件。

(8)jar包外部的application.properties或application.yml(不带spring.profile)配置文件。

(9)jar包内部的application.properties或application.yml(不带spring.profile)配置文件。

(10)@Configuration注解类上的@PropertySource

(11)通过SpringApplication.setDefaultProperties指定的默认属性

其中常用的为:(1)(6)(7)(8)(9)(10)

总结:

  • 优先加载操作系统层面的配置、命令行
  • 由jar包外向jar包内进行寻找,优先查找config目录。
  • 优先加载带profile(application-{profile}.yml)的,后加载不带profile(application.yml)的
  • 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置

3、远程配置中心:

以Nacos为例:默认远程配置优先级最高

可以通过在远程配置中心中做如下配置,设置本地配置覆盖远程配置:

spring:
  cloud:
    config:
      # 是否允许本地配置覆盖远程配置
      allow-override: true
      # 是否一切以本地配置为准,默认false
      override-none: false
      # 系统环境变量或系统属性才能覆盖远程配置文件的配置
      # 本地配置文件中配置优先级低于远程配置,默认true
      override-system-properties: true
相关文章
|
7月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
5083 97
|
7月前
|
人工智能 Java API
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
3.1.0 发布核心全新功能-Agent 注册中心,助力构建基于 A2A 协议的多 Agent 协作的AI应用,同时 MCP 注册中心适配最新 MCP 官方注册中心协议及升级优化多项核心功能。
2006 75
|
8月前
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
10月前
|
Dubbo 数据可视化 Java
整合SpringBoot、Dubbo与Nacos:一个快速入门教程
经过上述步骤,消费者模块成功引用了生产者提供的服务,并通过Spring Web将服务映射到了特定的URL路径上。消费者模块成功地调用并展示了生产者提供的数据,并在不移除特定依赖项的情况下确保了系统的正常运行。
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4964 14
|
监控 Java Nacos
使用Spring Boot集成Nacos
通过上述步骤,Spring Boot应用可以成功集成Nacos,利用Nacos的服务发现和配置管理功能来提升微服务架构的灵活性和可维护性。通过这种集成,开发者可以更高效地管理和部署微服务。
4965 17
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
296 5
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
395 4

热门文章

最新文章