【问题标题】:How do I define spring.config.name for Spring Boot tests?如何为 Spring Boot 测试定义 spring.config.name?
【发布时间】:2020-06-16 21:04:37
【问题描述】:

我有一个带有如下自定义配置设置的 Spring Boot 应用程序:

src/main/resources
├── application.properties
├── config1
│   ├── application-dev.properties
│   ├── application-prod.properties
│   └── application.properties
├── config2
│   ├── application-dev.properties
│   ├── application-prod.properties
│   └── application.properties
└── config3
    ├── application-dev.properties
    ├── application-prod.properties
    └── application.properties

在运行时使用的配置指定为:

java -jar \
-Dspring.profiles.active=dev \
-Dspring.config.name=application,config1/application \
target/my-application.0.0.1.jar

如何为@SpringBootTest 指定这个?我尝试使用@TestPropertySources,但它不起作用:

@SpringBootTest
@ActiveProfiles("prod")
@TestPropertySources({
        @TestPropertySource("classpath:application.properties"),
        @TestPropertySource("classpath:application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config1/application.properties"),
        @TestPropertySource("classpath:config1/application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config2/application.properties"),
        @TestPropertySource("classpath:config2/application-${spring.profile.active}.properties"),
        @TestPropertySource("classpath:config3/application.properties"),
        @TestPropertySource("classpath:config3/application-${spring.profile.active}.properties")
})

【问题讨论】:

    标签: spring-boot configuration spring-boot-test


    【解决方案1】:

    Spring Boot 允许在 @SpringBootTest@TestPropertySource 中指定属性,可以利用它们来指定 spring.config.name 属性。例如,以下内容会加载所有带有dev 配置文件的配置:

    @SpringBootTest(properties = {
            "spring.config.name=config1/application,config2/application,config3/application,application"
    })
    @ActiveProfiles("dev")
    

    这很可能有效,因为这些属性按照指定的顺序here 具有高优先级。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2019-02-08
      • 2022-01-04
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2017-12-03
      相关资源
      最近更新 更多