【问题标题】:spring boot: chain application properties from a starter?spring boot:从初学者开始链接应用程序属性?
【发布时间】:2017-06-17 11:19:22
【问题描述】:

我正在开发一个 Spring Boot 应用程序和启动器。我希望启动器包含通用属性和代码。

在我的启动器中,我有一个 application-dev.properties 文件。我在启动器中定义了一个@Profile("dev")。

当我使用开发配置文件启动我的应用程序时,我会看到启动器的属性,这很棒。不好的是,当我将 application-dev.properties 文件添加到我的应用程序时,根本不再读取来自 starter 的文件。这意味着我无法弄清楚如何将常见的“开发”配置文件属性放在那里。

根据external configuration 文档,我认为这会起作用,因为会先读取启动文件,然后再读取应用程序文件。

Spring Boot 使用一个非常特殊的 PropertySource 顺序,旨在允许明智地覆盖值。属性按以下顺序考虑:

剪辑

打包 jar 之外的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)

打包在您的 jar 中的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)

有什么建议吗?

【问题讨论】:

  • 一个建议。将 application-dev.properties 放入 starter 的 src/main/resources/config 文件夹并将应用程序的 application-dev.properties 放入 src/main/resources 怎么样?
  • 成功了!如果您回复而不是添加评论,我会将此标记为已回答。谢谢!
  • 您所讨论的这些属性是放在启动模块还是自动配置模块上?

标签: spring spring-boot


【解决方案1】:

将 application-dev.properties 放入 starter 的 src/main/resources/config 文件夹并将应用程序的 application-dev.properties 放入 src/main/resources 应该有助于解决此问题。

【讨论】:

    【解决方案2】:

    我认为将application-dev.properties 添加到启动器不是一个好主意。问题是您只能添加一次文件。好吧,您可以将文件放入文件夹config。这意味着您最多可以添加文件两次。不再。如果您决定使用第二个启动器怎么办?那你把application-dev.properties放在哪里了?

    我认为 application*.properties 应该只添加到最终用户产品中。对于便携式模块,我建议使用

    1. @Configuration 类上的@PropertySource 注释。
    @Configuration
    @PropertySource("classpath:/my/starter/dev.properties")
    @Profile("dev")
    public class MyConf {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2017-04-20
      相关资源
      最近更新 更多