Spring 引导配置文件特定和 spring.config.import 属性的优先级

Posted

技术标签:

【中文标题】Spring 引导配置文件特定和 spring.config.import 属性的优先级【英文标题】:Precedence of Spring boot profile specific and spring.config.import properties 【发布时间】:2021-10-15 23:51:27 【问题描述】:

Spring Boot 版本:2.5.0

我有不同的属性文件。 3 个在 jar 中,一个在服务器上(用于覆盖特定于服务器的属性)

    application.properties application-dev.properties application-prod.properties

活动配置文件和外部属性的路径在 application.properties 中配置。

spring.profiles.active=@prodProfile@
spring.config.import=optional:file:./application-local.properties

@prodProfile@ 的值来自 pom.xml 的配置文件部分。

    <properties>
        <prodProfile>prod</prodProfile>
    </properties>

如果我在 application-prod.properties 和 application-local.properties 中有相同的属性,哪个优先?当我测试时,我发现配置文件特定具有优先权。无法使用 spring.config.import 覆盖属性值。这是预期的行为吗?

【问题讨论】:

【参考方案1】:

是的,这是预期的行为。与described in the documentation 一样,使用spring.config.import 导入的文件“被视为紧接在声明导入的文件下方插入的附加文档”。

在您的情况下,您将文件导入application.properties,因此它将被视为一般的、非特定于配置文件的配置。因此,特定于配置文件的属性将优先。

【讨论】:

以上是关于Spring 引导配置文件特定和 spring.config.import 属性的优先级的主要内容,如果未能解决你的问题,请参考以下文章

配置文件引导的优化可以用于简单的特定功能优化吗?

Spring引导外部的外部属性

Spring Cloud Config 双引导文件行为

Spring引导Web套接字,无需向特定用户发送消息

领事首次使用 Spring Cloud 配置进行引导

依赖于配置文件特定属性的 Spring Boot 属性