【发布时间】:2020-01-29 07:31:15
【问题描述】:
Spring Boot 可以在 src/main/resources/ 中捆绑外部应用程序配置和配置文件覆盖。可以在运行时从文件系统加载其他配置文件。
给定捆绑的配置文件
src/main/resources
├── application.yml
└── application-prod.yml
和本地配置
config
└── application-prod.yml
Spring 能否可靠地合并prod 配置文件?如果有,解决冲突的规则是什么?
文档详细介绍了一般配置文件和捆绑配置与本地配置,但似乎没有解决所选配置文件同时具有捆绑配置和本地配置的情况。
【问题讨论】:
-
订单在顶部的同一部分中指定 -> docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/…。这是处理文件的顺序。因此,打包应用程序之外的任何内容都会覆盖其中的内容。
-
一般顺序,是的(12., 13.);但它在任何地方都没有明确谈论两个位置所代表的相同配置文件。我相信这些是以某种方式组合的,但不确定它们是否应该被组合,或者,如果是,如何。
-
这是加载它们的顺序,因此外部(12)覆盖内部(13)。如前所述,顺序非常清楚。它们没有被合并,而是按该顺序加载和查阅。因此,如果您在
config/application-prod.yml中有名为foo.bar的属性,则该属性优先于内部application-prod.yml。如果您还指定--foo.bar作为命令行参数,它甚至优先于文件。基本上,上述顺序是注册和咨询各个PropertySource实例的顺序。
标签: java spring spring-boot