简介
application.properties
和application.yml
这是常用的配置文件命名,大家应该都很熟悉。但是它们的优先级到底哪个更高呢?下面就开始做试验。都以server.port来测试
properties vs yml
- resources
- application.properties # 8081
- application.yml # 8082
通过简单的启动试验发现 properties > yml
classpath: vs classpath:/config
- resources
- application.properties # 8081
- /config/application.properties # 8082
启动发现 classpath:/config > classpath
classpath:/config/yml vs classpath:properties
通过上面发现properties的优先级大于yml,config的优先级大于classpath,那么config下面的yml与classpath下面的properties对比如何呢?
- resources
- application.properties # 8081
- /config/application.yml # 8082
启动发现 classpath:/config/yml > classpath:properties
通过这个试验可以发现,位置的优先级大于命名的优先级
properties vs -profile.properties
application.properties
与 application-{profile}.properties
默认的profile为default,那么久先对比application.properties
与 applicaation-default.properties
的优先级
- resources
- application.properties # 8081
- application-default.properties # 8082
启动发现,application-default.properties > application.properties
properties vs -profile.yml
与上面的试验类似,将application-default.properties替换为application-default.yml
- resources
- application.properties # 8081
- application-default.yml # 8082
启动发现,application-default.yml > application.properties
所以,加上-default的profile属性时,yml将会大于不加profile的properties,当然如果同时加上profile的属性,那么properties依然会大于yml
classpath:/config/properties vs classpath:application-default.yml
通过前面的实验发现config的优先级还是蛮高的,但是与default相比谁高呢?
- resources
- application-default.yml # 8081
- /config/application.properties # 8082
启动发现,application-default.yml > /config/application.properties。default的优先级是大于config目录的
classpath:/config/application-default.yml vs classpath:/application-default.yml
- resources
- application-default.yml # 8081
- /config/application-default.yml # 8082
启动发现,同样是default的条件下,config/application-default.yml > application-default.yml
总结
config/application-default.properties > config/application-default.yml > application-default.properties > application-default.yml > config/application.properties > config/application.yml > application.properties > application.yml