小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
spring-boot的核心竞争力就是灵活和强大的配置,能配置的就不用写代码,能用注解的就不写配置文件,能简化的配置就默认了不用额外配置。但这样灵活的配置能力也带来一个问题,就是可以从多个入口进行配置,以至于很多时候配置会被覆盖,也一时摸不着头脑。
首先spring boot支持两种格式的配置文件:application.properties和application.yml。其中properties文件的优先级要比yml高,相同的文件名前者会覆盖后者。如果你就不喜欢application这个名字,你可以在服务启动时单独指定,但不建议:
java -jar demo.jar --spring.config.name=newname
然后是全局加载顺序,配置文件可以写在多个地方,优先级顺序如下:
- 类路径下的配置文件:就是通常的src/main/resource/application.yml
- 类路径内config子目录的配置文件:src/main/resource/config/application.yml
- 当前项目根目录下的配置文件:和src平级的./application.yml
- 当前项目根目录下config子目录的配置文件:./config/application.yml
启动顺序是依次递减,使用默认的那个就对了。
再次,spring boot支持多个环境变量的启动,也会默认去读取application文件的结尾,约定如下:
application-dev.yml
application-test.yml
启动dev环境默认会读-dev的配置,如果其中存在和application.yml中相同的key,会用dev的value替换,换句话说dev会继承application.yml的配置,不同的地方以dev为准。
以上是一个简单的总结。