007SpringBoot之配置文件加载的优先级以及位置

96
编程界的小学生
2018.05.28 11:35 字数 616

一、基础

1、定义

之前我们的application.yml/properties文件都放到了classpath:下,然后SpringBoot项目启动后会自动读取并加载,那么这个文件放在哪呢?只能放到classpath:下吗?不是。

2、位置以及优先级

SpringBoot启动后会扫描以下位置的application.yml/properties文件作为SpringBoot的默认配置。

  • 1、file:./config/
  • 2、file:./
  • 3、classpath:/config/
  • 4、classpath:/

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

二、高级

1、互补配置

1.1、定义

我们上面介绍了配置文件是有优先级的,比如:我们在最高优先级(file:./config/)上配置了端口号,我们又在最低优先级(classpath:/)上配置了访问的域名,则SpringBoot启动的时候会加载全部配置文件不重复的配置项。也就是说会把端口和访问域名都加载进来,低优先级的配置并不会失效。

1.2、例子

1.2.1、高优先级的配置(yml)
server:
  port: 8081
1.2.2、低优先级的配置(properties)
server.port=8080

# 自定义访问域名
server.address=www.chentongwei.com
1.2.3、启动后的效果

端口:8081

域名:www.chentongwei.com

2、自定义配置文件加载位置

1、定义

若我们不想用以上的目录,该怎么自定义位置呢?可以用spring.config.location=来指定。项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。但是你指定后,启动SpringBoot并不会生效,是因为启动方式应该是

java -jar xxx.jar --spring.config.location=E:/application.properties

这样我们启动的时候就会加载E盘的application.properties

2、例子

java -jar xxx.jar --spring.config.location=E:/application.properties

3、用途

我觉得非常好用,这样运维人员部署的时候,直接用一个命令启动起来后,如果发现配置的bug了,直接更改配置文件然后重启jar即可,无需重新打包在部署上线。

三、广告

  • QQ群【Java初学者学习交流群】:458430385

  • 微信公众号【Java码农社区】

img
  • 今日头条号:编程界的小学生
SpringBoot合集
Web note ad 1