一.配置文件优先级
在java中我们可以通过多种配置文件格式来配置所需要的属性,我们以配置tomcat服务器运行的端口号server.port为例,已知配置文件的格式有properties,yml,yaml三种。如果这三种文件同时存在,那么哪一种先生效呢?它们生效的顺序又是什么样呢?

我们首先来执行以下springboot项目,看看tomcat端口号是多少。
当三个都存在时,生效的是8081,也就是说首先是properties先生效。将properties注释掉,再次运行,生效的是8082。即次优先是yml。最后是yaml。

二.配置java系统属性配置和命令行参数的优先级

我们现在配置好后将配置文件注释掉,看看Java系统属性和命令行参数哪个先生效。
可以看到命令行参数先生效,去掉命令行参数,java系统属性生效。

这是在idea中,如果项目打包上线了,我们如何配置java系统属性和命令行参数呢?
我们打包后运行jar包,在java后设置java系统属性,在最后设置命令行参数。不知道使用什么指令执行,输入java,帮助文档会告诉你。

不指定,默认8080

都设置,命令行参数生效
删掉命令行参数,java系统属性生效
三. 配置文件和java系统属性和命令行参数的优先级
我们将配置文件和java系统属性都配置好,看看谁先生效。

