zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    单例模式
    工厂方法模式
    简单工厂模式
    LoadRunner11.0下载及安装链接~(By网络)
    lombok 介绍及基本使用方法
    360浏览器拦截弹窗,window.open方式打不开新页面
    js生成二维码
    Filter过滤器的写法
    JavaScript获取浏览器类型与版本
    如何截取date类型的年月日部分?
  • 原文地址:https://www.cnblogs.com/xingxueliao/p/13451317.html
Copyright © 2011-2022 走看看