Spring Boot 加载配置文件的优先级了解么
Spring Boot 加载配置文件的优先级了解么
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
Spring Boot 配置文件加载优先级
Spring Boot 提供了多种方式来配置应用程序,这些配置可以位于多个位置,并且具有不同的优先级。以下是 Spring Boot 配置文件加载的优先级列表,从最高优先级到最低优先级:
命令行参数
任何直接在命令行上使用
--name=value
形式传递的参数都具有最高优先级。来自
SPRING_APPLICATION_JSON
的属性SPRING_APPLICATION_JSON
是一个环境变量,它包含一个内联的 JSON 对象。例如:1
SPRING_APPLICATION_JSON='{"acme":{"name":"test"}}'
ServletConfig 初始化参数
如果你的应用是一个传统的 war,则这些参数可以用来指定配置。
ServletContext 初始化参数
类似于 ServletConfig 初始化参数,但是它们是全局的。
JNDI 属性
在 JNDI 中配置的属性。
Java 系统属性 (
System.getProperties()
)可以通过
-Dname=value
语法传递给 JVM 的系统属性。操作系统环境变量
操作系统级别的环境变量也可以用来配置应用程序。
RandomValuePropertySource
只包含
random.*
属性的属性源。JAR 包外部的应用程序配置文件
位于
/config
子目录(例如config/application.properties
)或者在当前目录下(例如application.properties
)。JAR 包内部的应用程序配置文件
打包在 JAR 文件内部的配置文件,通常位于
/BOOT-INF/classes
或者类路径的根目录。通过
@PropertySource
注解在配置类中添加的属性使用
@PropertySource
注解的配置类。默认属性
在
@SpringBootApplication
注解的类中通过SpringApplication.setDefaultProperties
指定的默认属性。
了解这些优先级对于正确配置 Spring Boot 应用程序至关重要,因为它们决定了在存在多个配置源时哪些配置将生效。通常,你会希望将更具体的配置(如命令行参数)设置为更高的优先级,而更通用的配置(如应用程序配置文件)则设置为较低的优先级。