springboot默认配置文件加载循序官方说明上为
- 当前项目目录下的一个/config子目录
- 当前项目目录
- 项目的resources即一个classpath下的/config包
- 项目的resources即classpath根路径(root)
那么项目打包为jar包,并且在jar包同级目录放置配置文件的优先级应该大于jar内部的配置文件
外置application.properties
server.port=8888
内置application.properties
server.port=8080
此时通过cmd启动项目
java -jar demo-0.0.1-SNAPSHOT.jar
输出的端口为8888(外部配置文件的端口),在windows和linux下都是同样的结果,说明外部配置文件优先级大于内部,这是正常的,符合预期
但是
重点来了
当内部配置文件application.properties加上了配置文件环境(spring.profiles.active)选择时
server.port=8080
spring.profiles.active=dev
在windows平台下,输出端口为8888
在linux平台下,输出端口却为8080
这说明在linux平台下,外部配置文件失效了,但是在windows下依然有效
有没有谁知道,为什么加了spring.profiles.active以后在Linux下外部配置文件就失效了,但是windows平台依然有效