• SpringBoot 配置文件加载优先级


    我们一般在开发的时候,会将application.yml或者application.properties文件放在resources目录下,然后根据不同的环境加载不同的profile,比如以下的目录结构:

    resources
    ├── application.yml
    ├── application-test.yml
    ├── application-dev.yml
    ├── application-prod.yml
    └── log4j2-spring.xml

     

    其中,我们可以在application.yml里面使用以下的配置来激活对应的profile(你暂时可以理解带后缀的配置文件例如-test.yml,它被称之为profile):

    spring:
      profiles:
        active: dev

    当我们在application.yml中使用以上的配置时,application-dev.yml将会生效,但此时仍旧有一个问题,那就是我们如何在不修改jar包的情况下对这些配置文件进行更改?或者更确切的来说,我们如何将这些文件放在jar包以外,好让我们在更改配置的时候无需重新打包?

     

    SpringBoot默认会根据以下的顺序优先级来加载配置文件:

    1. 将这些配置存放在当前jar包的config目录(文件夹)下(也就是一个目录下既包含我们的jar包,也包含跟jar包同级目录的config目录下的配置文件)。

    2. 将这些配置存放在当前jar包平级的目录(文件夹)下(也就是一个目录下既包含我们的jar包,也包含我们的配置文件)

    3. 在jar包内(也就是classpath)的config目录下,在打包之前对应resources/config这个目录。

    4. 最后才是jar包内的根目录,也就是resources目录下,我们一般生成SpringBoot项目时,默认的会创建一个application.properties。

     

    看文字或许你不太明白,比如我们有一个app.jar是我们最终打包出来的应用程序那么:

    ./
    ├── app.jar
    ├── application.yml
    └── config
        └──application.yml

     

    当我们运行如下的命令启动我们的app.jar时,你认为哪一个配置文件会生效呢?

    java -jar app.jar

    答案是config/application.yml的文件会生效,同样的,在application.yml内激活的profile也遵循这个优先规则,另外可以参考一下我之前的一篇文章:https://www.cnblogs.com/xingxueliao/p/7113651.html

  • 相关阅读:
    contest9 CF295 div1 ooxx? ooox? oooo?
    The 8KB bug
    简单消息框架
    示例页面
    Unity3d中角色模型和角色名字保持相对位置
    Unityd外发光Shader Lab
    Unity3D判断当前所在平台
    Unity3D中的shader基础知识
    Sql Server 分区
    MVC 使用缓存
  • 原文地址:https://www.cnblogs.com/xingxueliao/p/13451317.html
Copyright © 2020-2023  润新知