【问题标题】:spring.profiles.active priority for application-{profile}.properties应用程序-{profile}.properties 的 spring.profiles.active 优先级
【发布时间】:2019-04-26 08:14:45
【问题描述】:

如果添加了多个spring.profiles.active,我想知道application-{profile}.properties 文件的优先级

例如:

  • 可以说,我有这个spring.profiles.active=profile1,profile2
  • 在我的src/main/resources 中,我有这些文件application-profile1.propertiesapplication-profile2.properties
  • 如果两个文件都配置了相同的属性,但具有不同的值,那么显示的是哪一个?

我已阅读this,但此处未涵盖此主题。

提前致谢。

【问题讨论】:

    标签: spring


    【解决方案1】:

    根据文档,最后指定的配置文件获胜。
    在您的示例中:spring.profiles.active=profile1,profile2profile2 的属性应该覆盖profile1 的属性。

    在文档的24.4 Profile-specific Properties点,你可以阅读:

    如果指定了多个配置文件,则应用最后获胜的策略。为了 例如,由 spring.profiles.active 属性指定的配置文件是 在通过 SpringApplication API 配置的那些之后添加,并且 因此优先。

    【讨论】:

    • 感谢文档,我错过了文档的那部分。
    • 不客气。与 Spring Boot 文档相当相关的某些部分有时会分解为两个不同的部分,以使其“消化”。我也花了几分钟才重新找到它。
    【解决方案2】:

    首先 Spring 加载默认配置文件 (application.properties),然后按照您列出它们的相同顺序使用您的其他配置文件覆盖它。 因此,在您的情况下,profile2 值将覆盖您在 profileapplication.properties 中定义的所有内容

    最简单的方法是编写非常简单的应用程序并检查它:)

    【讨论】:

    • 谢谢,The simplest way is to write very simple application and just check it 我对 Spring 不熟悉,所以编写这个简单的应用程序可能需要一些时间,我现在实际上正在做,但还没有完成。
    • 您的回答非常好,但是我错过了对官方文档的引用,使其他答案成为更好的答案,谢谢!
    • 没问题。祝你的 Spring 应用好运:)
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多