一.配置文件优先级 在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系统属性都配置好,看看谁先生效。 运行后是9000,那么是java系统属性先生效,而命令行参数的优先级又大于java系统属性,因此总的优先级顺序为: 命令行参数>java系统属性>properties>yml>yaml