spring.application.name=guides-propertiestestKey=key-spring.config.location复制代码输出结果如下:
2020-01-04 00:19:12.225 INFO 11147 --- [ main] com.glmapper.bridge.boot.BootStrap : No active profile set, falling back to default profiles: default-------------------------------key-spring.config.location-------------------------------复制代码所以在使用 spring.config.location 指定外部配置文件时 , 需要此份配置文件需全量满足当前工程运行时所需 , 因为它不会去与 resources 目录下的配置文件去做 merge 操作 。
spring.config.additional-location在使用
spring.config.additional-location 这种方式自定义 locations 时 , 除了默认 locations 之外 , 还会使用 spring.config.additional-location 指定的 。
additional-location:言外之意就是增量的配置在工程的根目录的 conf 目录下新建一个
application-addition.properties 配置文件 , 内容如下:
testKey=key-addition复制代码通过 java -jar-Dspring.config.additional-location=conf/application-addition.properties guides-properties/target/guides-properties-0.0.1-SNAPSHOT.jar 启动工程 , 输出结果如下:
2020-01-04 00:28:30.048 INFO 11384 --- [ main] com.glmapper.bridge.boot.BootStrap : No active profile set, falling back to default profiles: default-------------------------------key-addition-------------------------------复制代码结论是 , 会覆盖默认 application.properties 中的配置值 。spring.config.additional-location 与 spring.profiles.active 配置加载关系spring.config.location 不用多数 , 它就是独立的一份 , 使用它就不能使用其它的 。所以这里只分析
spring.config.additional-location 与 spring.profiles.active 配置加载关系 。
同时指定两个配置通过 java -jar -Dspring.profiles.active=dev
-Dspring.config.additional-location=conf/application-addition.properties guides-properties/target/guides-properties-0.0.1-SNAPSHOT.jar 启动工程 , 输出如下:
2020-01-04 00:32:59.044 INFO 11451 --- [ main] com.glmapper.bridge.boot.BootStrap : The following profiles are active: dev-------------------------------key-dev-------------------------------复制代码为了排除与 -D 参数顺序有关 , 也使用如下方式再执行一次:java -jar-Dspring.config.additional-location=conf/application-addition.properties -Dspring.profiles.active=dev guides-properties/target/guides-properties-0.0.1-SNAPSHOT.jar , 输出结果与前面相同 , 所以可以得出 , spring.profiles.active 的优先级比 spring.config.additional-location 要高 。
`spring.config.additional-location` 指定差异增量配置在
spring.config.additional-location 中增加 additionKey
testKey=key-additionadditionKey=testAddition使用 java -jar-Dspring.config.additional-location=conf/application-addition.properties -Dspring.profiles.active=dev guides-properties/target/guides-properties-0.0.1-SNAPSHOT.jar 启动工程 , 输出如下:
2020-01-04 11:44:42.227 INFO 12821 --- [ main] com.glmapper.bridge.boot.BootStrap : The following profiles are active: dev-------------------------------key-devtestAddition-------------------------------复制代码结论是spring.config.additional-location 可以用于提供出 profiles 机制或者默认方式之外的增量配置 。
小结在使用外部化配置文件时 , 执行顺序为:
spring.config.location > spring.profiles.active >
spring.config.additional-location > 默认的 application.proerties 。
其中通过 spring.profiles.active 和
spring.config.additional-location指定的配置文件会与 默认的application.proerties merge 作为最终的配置 , spring.config.location 则不会 。
作者:glmapper
链接:
https://juejin.im/post/5e10136d5188253aae7d828c
推荐阅读
- openscap 免费开源的扫描工具
- springboot三种拦截器
- 聊聊存储卡选购中的注意事项
- 今天我们为什么要读古诗?今天的古诗为什么_5
- SpringBoot集成多数据源
- SpringBoot整合RabbitMQ四种交换机类型详解
- 相亲聊天怎么聊?
- 程序员标配Springboot!终于有人把SpringBoot讲的通俗易懂了
- 聊聊笔记本行业中的“认证标准”
- 值得现在就去尝试的四款开源聊天应用软件
