覆盖弹簧引导中的配置文件属性



在春季启动中,我有以下配置文件:应用程序电子邮件.yaml

services:
email:
cron: '....'
recipient: `...`
other properties...

在test/resources目录中,我有application.yaml,我想包括电子邮件配置文件中的所有属性,但对于测试,我想覆盖recipient属性。

所以我希望我的应用程序.yaml看起来像这样:

spring:
profiles:
include: email
services:
email:
recipient: `test-email`

据我所知,spring首先在test/resources中读取application.yaml,然后用概要文件中的值覆盖它。但我想要的恰恰相反。

我怎样才能做到这一点?

附加1:我想我可以创建配置文件测试,在那里定义我的测试接收者。但是我可以在没有额外配置文件的情况下完成吗?

最好的方法实际上是创建一个application-test.yaml,并激活概要文件测试。

你为什么不想这样做?这是春天推荐的方式。

要获得所有的测试属性和电子邮件属性,我需要添加以下注释:

@ActiveProfiles("test")
@PropertySource("classpath:application-email.yaml")
public class MyWonderfulTests { ...}

假设您只想覆盖一个属性,请将以下静态块添加到测试类的顶部:

static {
System.setProperty("recipient", "test-email");
}

这应该会奏效:(

相关内容

  • 没有找到相关文章

最新更新