SpringBoot - 配置文件的优先级

配置文件优先级:

(1)命令行参数;
(2)java:comp/env的JNDI属性;
(3)JAVA系统的环境属性;
(4)操作系统的环境变量;
(5)JAR包外部的application-XXX.properties或application-XXX.yml配置文件;
(6)JAR包内部的application-XXX.properties或application-XXX.yml配置文件;
(7)JAR包外部的application.properties或application.yml配置文件;
(8)JAR包内部的application.properties或application.yml配置文件;
(9)@Configuration注解类上的@PropertySource指定的配置文件;
(10)通过SpringApplication.setDefaultProperties 指定的默认属性;

项目外部配置文件:

(1)命令行参数:
在命令行中通过 java -jar 命令启动项目时,可以使用连续的两个减号 – 对配置文件中的属性值进行赋值,则命令行设置的属性会覆盖配置文件中属性的值。
java -jar xx.jar --server.port=8081,会覆盖配置文件中的端口。

(2)外置配置文件:
还可以指定配置文件的路径或者目录,则系统会使用指定的配置文件,或者目录下所有的配置文件。
java -jar xxx.jar --spring.config.location=/opt/servicex/config/application.yml
java -jar xxx.jar --spring.config.location=/opt/servicex/config/

项目内部配置文件:

(1)在同一级目录下(除后缀外其他部分都相同)配置文件的优先级:properties(最高) > yml > yaml(最低), 优先级高的配置会覆盖优先级低的配置。
(2)项目中优先级如下(从上往下优先级逐级降低,优先级高的配置会覆盖优先级低的配置)
项目名/config/XXX配置文件 (优先级最高)
项目名/XXX配置文件
项目名/src/main/resources/config/XXX配置文件
项目名/src/main/resources/XXX配置文件 (优先级最低)
在这里插入图片描述

servicex                 // 项目名
    |- servicex-auth     // 模块1
    |- servicex-system   // 模块2
        |- config        
            |- application.yml                // 1
        |- src
            |- main                  
                |- assembly          
                |- java              
                |- resources         
                    |- config        
                        |- application.yml    // 3
                    |- application.yml        // 4
            |- test             
        |- target
        |- application.yml                    // 2
        |- pom.xml  
    |- sql            
    |- doc           
    |- .gitignore     
    |- pom.xml        
    |- README.md      
External Libraries    

BOOTSTRAP配置文件

在 Spring Boot 中有两种上下文,一种是 bootstrap另外一种是 application, bootstrap 是应用程序的父上下文,bootstrap用于应用程序上下文的引导阶段,由父Spring ApplicationContext加载。bootstrap 的加载优先于 applicaton,所以优先级从大到小如下:
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

内外部优先级:

项目外部配置文件 > 项目内部配置文件

欢迎交流

请添加图片描述

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spring Boot 配置文件优先级如下: 1. 在命令行中使用 --spring.config.name 和 --spring.config.location 参数指定的配置文件。 2. 在项目根目录下的 config 子目录中的 application.properties 或 application.yml 文件。 3. 在项目根目录下的 application.properties 或 application.yml 文件。 4. 在 classpath 下的 config 目录中的 application.properties 或 application.yml 文件。 5. 在 classpath 下的 application.properties 或 application.yml 文件。 优先级从高到低,如果同一个配置在多个文件中都存在,那么优先级高的会覆盖优先级低的。 ### 回答2: SpringBoot 是一种全新的框架,它通过自动配置(auto-configuration)和约定大于配置(convention over configuration)的方式,提供了开箱即用的开发体验。其中,配置文件优先级SpringBoot 开发中的一个重要问题。 SpringBoot 支持多种不同类型的配置文件,包括 properties、yml、yaml、json 等。在使用不同类型的配置文件时,SpringBoot 会为不同的配置文件设置不同的优先级,如下所示: 1. DevTools 全局设置文件优先级最高。SpringBoot在启动时会首先加载 DevTools 全局设置文件 application.properties 和 application.yml,并且该配置文件不会受到其他配置文件的影响。 2. 测试配置文件优先级高于主配置文件。如果在测试环境中使用不同的配置文件,那么 SpringBoot 会先加载测试环境的配置文件 application-test.properties 或者 application-test.yml,然后再加载主配置文件 application.properties 或者 application.yml。 3. 命令行参数的优先级高于配置文件。如果在启动应用程序时指定了命令行参数,那么 SpringBoot 会使用命令行参数中的配置覆盖通过配置文件中相同的配置。 4. 应用程序内部的配置文件优先级低于外部配置文件。如果同一目录下有多个同名的配置文件,那么 SpringBoot 会优先加载外部配置文件,然后再加载内部配置文件。 5. 不同类型的配置文件优先级依次递减。在 SpringBoot 中,yml 文件的优先级高于 properties 文件。如果同时存在 application.properties 和 application.yml 两种配置文件,那么 SpringBoot 会优先加载 application.yml 文件。 6. 默认配置文件不可替换。SpringBoot 在启动时会自动搜索默认配置文件 application.properties 或者 application.yml,如果存在就会加载,且不可替换。 以上是 SpringBoot 配置文件优先级,不同的配置文件具有不同的优先级,在实际开发中,需要根据不同的需求选择不同的配置文件,并合理配置其优先级,才能更好地发挥 SpringBoot 的自动配置和约定大于配置的特性。 ### 回答3: Spring Boot是一个全功能框架,可以通过各种方式为我们的应用程序提供配置。在项目中,可以使用各种文件作为配置文件。对于不同的配置文件Spring Boot有不同的优先级,如下所述。 1、项目默认配置 Spring Boot会在classpath下面查找一个名为application.properties或application.yml的文件,使用其中的配置作为项目的默认配置。这个文件夹应该在项目的src/main/resources目录下。 2、特定的配置文件 可以使用spring.config.name和spring.config.location来指定想要覆盖的配置文件的名称和路径,例如: spring.config.name=myConfigFile spring.config.location=file:/etc/myApp/ 在这个例子中,Spring Boot将会在/etc/myApp/下查找一个名为myConfigFile的文件作为特定配置文件。 3、Profile-specific配置文件 Spring Boot允许为每个Profile定义独立的配置文件。可以使用spring.profiles.active属性来确定当前正在使用的Profile。例如,可以在application.properties或application.yml中定义: spring.profiles.active=dev 这就意味着我们需要创建一个名为application-dev.properties或application-dev.yml的文件,在其中定义适用于dev环境的配置。 4、命令行参数 在命令行中指定的参数可以覆盖任何其他配置。例如,使用以下命令运行应用程序: java -jar myApp.jar --myProperty=myValue 在这个例子中,Spring Boot将使用“myValue”替换使用application.properties或application.yml中定义的myProperty的值。 5、环境变量 Spring Boot还支持使用环境变量来配置应用程序。例如,如果在环境变量中定义了“SPRING_APP_NAME”,您可以在应用程序中使用该变量,如下所示: @Value("${SPRING_APP_NAME}") private String appName; 如果在环境变量和配置文件中都找不到变量,则Spring Boot将使用默认值。 结论 Spring Boot提供了多种自定义配置的方式。这个框架允许开发人员根据业务需求使用不同的配置文件和配置方式。如果多个配置文件有冲突,Spring Boot将按照上述优先级使用这些配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值