《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
相关文章
|
9月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
5344 102
|
10月前
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
12月前
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml。
1347 0
|
Dubbo 数据可视化 Java
整合SpringBoot、Dubbo与Nacos:一个快速入门教程
经过上述步骤,消费者模块成功引用了生产者提供的服务,并通过Spring Web将服务映射到了特定的URL路径上。消费者模块成功地调用并展示了生产者提供的数据,并在不移除特定依赖项的情况下确保了系统的正常运行。
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3228 1
|
9月前
|
JavaScript Java 关系型数据库
基于springboot的美食城服务管理系统
本系统基于Spring Boot、Java、Vue和MySQL技术,构建集消费者服务、商家管理与后台监管于一体的美食城综合管理平台,提升运营效率与用户体验。
|
9月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
632 4
|
12月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
942 0

热门文章

最新文章