SpringBoot配置文件存放位置以及读取顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot配置文件存放位置以及读取顺序相关的知识,希望对你有一定的参考价值。

参考技术A 默认情况下,我们可以将application.properties或者application.yaml(为了方便演示,本文以下均以application.properties介绍)放置在如下四处:

1.1、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。

jar包会自动生成在target目录下。

我们将生成的jar包,复制出来,到另外文件夹进行运行,比如,我现在该jar包复制到test目录下,但是这个时候是起不来,因为没有配置文件,虽然我们在idea里面是有config目录的,但是它并不没有被打包进去。我们要把config目录也复制过来,跟该jar包放在同一个目录下。

在此处,我们可以使用java -jar demo-0.01-SNAPSHOT来运行项目。

正常运行。

当我们将其打成jar包时,application.properties同样不会被打包进jar包中。需要另外复制出来和jar包放在才能正常运行。

推荐以上两种方式来放置配置文件,如果不写开发,测试,和生产好几套环境配置文件的话,就可以直接打开配置文件,改成自己需要的配置即可。

以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。

打包后,如下图,jar包再target里面,我们寻找下application.properties文件。为了方便演示,我们将target目录下的demo-0.0.1-SNAPSHOT.jar放到一个新目录给它解压开,找下该配置文件,我放置到了一个test目录下。

解压后:如下图,我们进入目录

发现config目录被放置在classes目录下。然后这也就让我们明白了,什么是classpath?classpath的路径到底指的是哪里,在idea中我们就把它放置在resource目录,该目录就是表示classpath。而被打成jar包后classes目录就是所谓的classpath。

所有的yaml文件,同理。

springboot配置文件的加载位置以及外部配置加载顺序04

项目中的配置

springboot启动时会扫描以下位置的application.properties或者application.yml文件座位soringboot的默认配置文件

  项目名/config/applcation.properties

  项目名/application.properties

  resources/config/application.properties

  resources/application.properties

优先级由高到低,高优先级的配置会覆盖低优先级的配置

SpringBoot会从这四个位置全部加载主配置文件:互补配置

我们还可以通过spring.config.location来改变默认的配置文件的位置

项目打包以后,可以使用,命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定的配置文件和默认加载的配置文件共同形成互补配置。

 

以上是关于SpringBoot配置文件存放位置以及读取顺序的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot配置文件——加载顺序

springboot配置文件的加载位置以及外部配置加载顺序04

springboot配置文件的加载位置以及外部配置加载顺序04

jar包启动方式以及配置文件读取顺序

springboot 加载配置文件顺序

springboot 加载配置文件顺序