【问题标题】:How to merge application.properties with application-default.properties and include in other test profiles with Spring Boot >2.4如何将 application.properties 与 application-default.properties 合并并包含在 Spring Boot >2.4 的其他测试配置文件中
【发布时间】:2021-12-28 15:17:28
【问题描述】:

我们希望在运行测试时将 src/main/resources/application.properties 与其他默认属性合并,而这些默认属性又应包含在通过 Spring Boot 应用程序中的特定配置文件激活的其他(测试)属性文件中。

在 Spring Boot 2.4 之前,通过在 src/test/resources/application-default.properties 中包含所有常见的测试属性来保持事物干燥,这非常有效。然后这些会被 Spring [1] 自动与来自 src/main/resources/application.properties 的那些合并。这使我们能够拥有自己的一组默认属性,而无需通过测试来指定 @ActiveProfiles("default")

其他(测试)配置文件可以拥有自己的应用程序-.properties 和spring.profiles.include=default,然后进一步扩展默认值。

在 Spring Boot 2.4 中,我正在为新的“规则”而苦苦挣扎:

  • 我无法再从 application-.properties 加载 application-default.properties,因为在非特定配置文件 [2] 中不再允许使用 spring.profiles.include

  • 我不想介绍src/test/resources/application.properties,因为我不想重复src/main/resources/application.properties 的所有内容。此外,我不想在应用程序的属性中加载任何激活任何与测试相关的配置文件。

看起来一种解决方案可能是将spring.profiles.include=default 显式添加到src/main/resources/application.properties 以强制应用程序包含具有默认属性的属性文件,这在运行实际应用程序时将像以前一样工作,但请考虑src/test/resources/application-default.properties运行测试时。

这是要走的路还是有更聪明的解决方案来解决这个问题并仍然保持属性没有冗余?

【问题讨论】:

    标签: java spring spring-boot spring-test


    【解决方案1】:

    spring.profiles.active=dev

    在 application.properties 文件中添加此配置

    【讨论】:

    • 激活配置文件只是加载正确属性的一个步骤。但是在我的问题中,我问的是正确的属性文件结构,以便测试与src/main/resources/application.properties 合并并启用 Spring Boot 2.4+ 的属性文件包含。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2021-06-26
    • 2019-11-09
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多