SpringBoot配置优先级
本文用配置项目端口号来演示优先级
内部属性配置
如果分别在SpringBoot支持的三种配置文件中设置不同的端口号,那么最终会使用哪个端口号呢?
application.properties:
|
|
application.yml:
|
|
application.yaml:
|
|
答案是application.properties配置的8081
如果注释掉application.properties中的端口,会发现使用的是application.yml配置的8082
综上所述,三种配置文件的优先级:
properties > yml > yaml
虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (yml是主流)
外部属性配置
可以通过Java系统属性修改端口
|
|
也可以通过命令行参数修改端口
|
|
可以在idea中配置,在新版idea中添加虚拟机选项(Add VM option)、程序实参(Program arguments)这两项默认隐藏,需要手动打开,如下图所示

分别输入不同的端口号后启动,发现是命令行参数设置的端口,说明命令行参数优先级高于Java系统属性
如果application.properties和Java系统属性一起配置呢?答案是使用Java系统属性配置的端口,由此可见Java系统属性优先级高于配置文件
应用
当已经把项目打包成jar包后,想要修改某个配置,这是就可以通过外部属性配置来修改
用Java系统配置:
|
|
用命令行参数:
|
|