【问题标题】:Environment Configuration Spring Boot环境配置 Spring Boot
【发布时间】:2018-03-14 13:27:23
【问题描述】:

创建了一个 Spring Boot 应用程序,该应用程序需要从“Local Dev”迁移到“Test”、“QA”和“Prod”环境。

应用程序当前使用“application.properties”进行数据库连接和 Kafka 配置。

我想部署到“测试”并意识到这些属性不适用于该环境。阅读参考文档后,看起来我可以简单地复制 application.properties 文件并添加一个新的 application-test.properties,依此类推,然后使用 -Dspring.profiles.active=test 运行独立 jar似乎有效。

但是当我完成时,这意味着我在 jar 中有 4 个不同的 appliction-XXXXX.properties 文件,它们可能不好,也可能不坏。我知道最终的配置是使用 Spring Config 服务器,但现在我们还没有这方面的能力。

任何人都可以验证使用多个属性文件是可行的并且可以工作一段时间,或者如果我正在查看这一切都是错误的。我不想在每个环境中的服务器上进行配置,因为我认为这些迷你服务应该是自包含的。

我们将不胜感激。

【问题讨论】:

  • 我们可以保留在 application.properties (application.yml) 中的不会通过环境更改的公共属性。您可以将特定环境的属性保留到 application-test.properties 或 application-dev.properties ...
  • 假设如果您可以像 dev1、dev2 这样的多个开发环境,您可以让 application-dev-base.yml 包含 dev 的公共属性,并且在 application-dev1 中包含 application-dev- base.yml ,就像那样...

标签: spring-boot


【解决方案1】:

总之,你的配置文件应该在你的源代码之外。

@PropertySource(value = {"classpath:system.properties"})
public class EnvironmentConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

假设它被命名为“system.properties”,它将在部署阶段上传到您的应用程序类路径下的服务器。

【讨论】:

    猜你喜欢
    • 2014-09-07
    • 2019-08-03
    • 2018-07-31
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2020-06-09
    • 2013-08-16
    相关资源
    最近更新 更多