Spring Boot 加载配置文件的优先级了解么

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

Spring Boot 配置文件加载优先级

Spring Boot 提供了多种方式来配置应用程序,这些配置可以位于多个位置,并且具有不同的优先级。以下是Spring Boot配置文件加载的优先级列表,从最高优先级到最低优先级:

  1. 命令行参数

    任何直接在命令行上使用 --name=value 形式传递的参数都具有最高优先级。

  2. 来自 SPRING_APPLICATION_JSON 的属性

    SPRING_APPLICATION_JSON 是一个环境变量,它包含一个内联的JSON对象。例如:

    SPRING_APPLICATION_JSON='{"acme":{"name":"test"}}'
  3. ServletConfig 初始化参数

    如果你的应用是一个传统的war,则这些参数可以用来指定配置。

  4. ServletContext 初始化参数

    类似于ServletConfig初始化参数,但是它们是全局的。

  5. JNDI 属性

    在JNDI中配置的属性。

  6. Java系统属性 (System.getProperties())

    可以通过 -Dname=value 语法传递给JVM的系统属性。

  7. 操作系统环境变量

    操作系统级别的环境变量也可以用来配置应用程序。

  8. RandomValuePropertySource

    只包含 random.* 属性的属性源。

  9. JAR包外部的应用程序配置文件

    位于 /config 子目录(例如 config/application.properties)或者在当前目录下(例如 application.properties)。

  10. JAR包内部的应用程序配置文件

    打包在JAR文件内部的配置文件,通常位于 /BOOT-INF/classes 或者类路径的根目录。

  11. 通过 @PropertySource 注解在配置类中添加的属性

    使用 @PropertySource 注解的配置类。

  12. 默认属性

    @SpringBootApplication 注解的类中通过 SpringApplication.setDefaultProperties 指定的默认属性。

了解这些优先级对于正确配置Spring Boot应用程序至关重要,因为它们决定了在存在多个配置源时哪些配置将生效。通常,你会希望将更具体的配置(如命令行参数)设置为更高的优先级,而更通用的配置(如应用程序配置文件)则设置为较低的优先级。

最后更新于