关于配置文件

springboot有两种格式的配置文件,即yaml和properties,两种配置文件在功能上完全等效。
相对于 properties而言,yaml更加简洁明了,而且使用的场景也更多。除了简洁,yaml还有另外一个特点,就是yaml中的数据是有序的,properties 中的数据是无序的
关于yaml以及properties详细使用方法,我们稍后开贴专门说明,这里不再赘述。

配置文件加载顺序

默认情况下,springboot应用会依次从以下位置加载配置文件:

  1. 项目根目录下的config文件夹
  2. 项目根目录
  3. resources目录下的config文件夹
  4. resources目录



spring boot 配置文件乱码 spring boot配置文件详解_配置文件


这四个是默认的位置,我们可以简单验证一下。

在项目根目录下config文件夹下的application.yaml,设置端口为6666

server:  port: 6666

启动项目,我们可以看到,默认端口已经是6666


spring boot 配置文件乱码 spring boot配置文件详解_配置文件_02


自定义配置文件位置

除了上述的四个默认加载配置文件的位置,我们也可以自定义文件位置。通过

pring.config.location

即可指定加载配置文件位置

Idea调试时动态指定配置文件位置

举个栗子,我在resources文件夹下面建立一个blog文件夹,并将 application.yaml 文件放到blog文件夹下,同时设置端口为6666

  1. 加入创建配置文件,并按照如下设置
  2. 修改Idea配置信息
spring.config.location=classpath:/blog/


spring boot 配置文件乱码 spring boot配置文件详解_配置文件_03


一定要注意配置文件位置,最后的/不能少,否则会报错

  1. 运行程序,我们会发现端口变成了 6666

运行jar包是动态指定配置文件位置

除了在Idea调试,我们终归要将程序发不成jar包,那么jar包如何加载配置文件呢?

我们是以上面的程序进行说明,此时,我们将配置文件单独拿出来,同时将resourceblog文件夹删掉。并通过

mvn package

将程序打包成jar包,打包后的jar包名称为properties-0.0.1-SNAPSHOT.jar ,然后我们将jar包及application.yaml文件放到一起。

我们通过

java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location = ./

运行程序,通过控制台,我们可以看到此时端口仍然是6666,证明已经加载我们的配置文件。


spring boot 配置文件乱码 spring boot配置文件详解_自定义_04


自定义配置文件名

自定义配置文件名的方式,与自定义配置文件的方式类似,同时两个命令可以一起使用。

spring.config.name

这里只展示一下用java -jar命令运行的方式,我把application.yaml文件改成blog.yaml,内容不变。

java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=./ --spring.config.name=blog


spring boot 配置文件乱码 spring boot配置文件详解_spring_05


可以看到,程序依然以6666端口成功启动。

自定义配置文件加载顺序

上面说了工程内的配置文件就自定义配置文件,如果自定义配置文件与默认配置文件同时存在,那么springboot如何加载呢。

  1. 新建工程
  2. 修改application.propertes端口号改成1234
  3. package打包工程
  4. 使用java -jar 命令加载配置文件,并制定端口为4321

我们看到,程序先加载了环境变量中的配置信息