SpringBoot配置优先级

通过不同的途径配置端口号来对比优先级

SpringBoot配置优先级

本文用配置项目端口号来演示优先级

内部属性配置

如果分别在SpringBoot支持的三种配置文件中设置不同的端口号,那么最终会使用哪个端口号呢?

application.properties:

1
server.port=8081

application.yml:

1
2
server:
   port: 8082

application.yaml:

1
2
server:
   port: 8083

答案是application.properties配置的8081

如果注释掉application.properties中的端口,会发现使用的是application.yml配置的8082

综上所述,三种配置文件的优先级:

properties > yml > yaml

虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (yml是主流)

外部属性配置

可以通过Java系统属性修改端口

1
-Dserver.port=9000

也可以通过命令行参数修改端口

1
--server.port=10010

可以在idea中配置,在新版idea中添加虚拟机选项(Add VM option)、程序实参(Program arguments)这两项默认隐藏,需要手动打开,如下图所示

image-20250922222527304

分别输入不同的端口号后启动,发现是命令行参数设置的端口,说明命令行参数优先级高于Java系统属性

如果application.properties和Java系统属性一起配置呢?答案是使用Java系统属性配置的端口,由此可见Java系统属性优先级高于配置文件

应用

当已经把项目打包成jar包后,想要修改某个配置,这是就可以通过外部属性配置来修改

用Java系统配置:

1
java -Dserver.port=9000 -jar tlias-web-management-0.0.1-SNAPSHOT.jar

用命令行参数:

1
java -jar tlias-web-management-0.0.1-SNAPSHOT.jar --server.port=10010
本站于2025年3月26日建立
使用 Hugo 构建
主题 StackJimmy 设计