【问题标题】:Spring Boot Managing Properties FileSpring Boot 管理属性文件
【发布时间】:2021-02-05 15:34:00
【问题描述】:

我正在尝试改进我的微服务以维护单个应用程序 yaml,而不是维护多个配置文件。最初,我维护不同的配置文件,并且在 helm 环境特定值 yaml 中重复了通用配置。现在的策略是将所有内容移至 values.yml 并在配置映射中维护特定于环境的值。我面临的问题是我的应用程序 yml 现在看起来非常通用,带有占位符,出于同样的原因,测试运行失败,因为我无法为 application.yml 中的每个配置提供默认值。原因是,例如:mongodb 集群端点格式在本地与其他环境不同。我设法在测试/资源下放置了一个本地特定的 yaml 文件,但不确定这是正确的方法。无论如何,我需要在 main/resources 下维护一个本地特定的 yaml 以在本地运行。所以基本上我也在测试资源下复制它。有没有更好的方法来指向测试以在主要资源下加载 application-local.yml,这样我就可以避免重复,或者有没有更好的方法来做这件事?

【问题讨论】:

    标签: spring-boot kubernetes microservices kubernetes-helm


    【解决方案1】:

    1.在一个文件中处理多个配置

    您可以将所有配置添加到一个属性文件中,如下所示

    spring.application.name: test. ## Used for all profiles
    ---
    spring.config.active.on-profile:dev
    spring.database.host: localhost
    spring.database.name: testing
    ---
    spring.config.active.on-profile:prod. ##You can use spring.profiles:prod
    spring.database.host: localhost
    spring.database.name: testing
    ---
    

    --- 标记 yml 文档的分割位置,#--- 标记属性文件的分割位置。

    多文档属性文件常与以下激活属性结合使用

    1. spring.config.activate.on-profile
    2. spring.config.activate.on.on-cloud-platform

    所有未指定配置文件名称的属性定义都用于所有配置文件。在上述情况下,spring.application.name 将用于所有配置文件 dev or prod

    在运行应用程序时,您可以手动指定配置文件,也可以在 yml 或属性中设置在整个应用程序中使用的属性。

            spring.application.name: test
            spring.profiles.active: prod
    

    2。测试您的应用程序

    在运行需要访问yml(property)file 中的属性的测试时,有

    无需重新定义您的配置。只需添加@ActiveProfile("profile-name")

    关于你的测试。

    例如:

              @ActiveProfiles("dev")  
              @SpringBootTest(webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)
               
      
             
    

    【讨论】:

    • 感谢@malvern dongeni。使用本地配置文件拆分文档并将其设置为基础测试类的活动配置文件解决了该问题。但是,如果我需要在本地运行,我需要明确指定配置文件,您有什么建议可以避免这种情况吗?
    • @vipinev 欢迎您在 IDE 中进行设置。对于 IntelliJ,请转到 edit configurations 然后 spring-boot.under active profiles 然后添加您的本地配置文件。
    猜你喜欢
    • 2018-03-31
    • 2020-07-30
    • 2018-02-21
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多