gpt4 book ai didi

java - 如何在Spring中设置多个配置文件的默认实现?

转载 作者:行者123 更新时间:2023-12-01 09:00:26 25 4
gpt4 key购买 nike

例如,我有很多配置文件,“dev”、“prod”、“test”等。

interface A

@Component
class DefaultImpl implements A

@Profile("test")
@Component
class TestImpl implements A

我只希望 TestImpl 用于配置文件“test”,但需要 DefaultImpl 用于所有其他配置文件。

更新:为什么 @Profile("default") 对我不起作用:

我有两个测试配置文件,即“test1”和“test2”

我在配置文件“test1”中提供了不同的实现:

@Profile("default")
class DefaultImpl extends A

@Profile("test1")
class Test1Impl extends A

现在当我@ActivateProfile("test2")时,它不会选择DefaultImpl

但是,如果我不设置配置文件,如下所示:

class DefaultImpl extends A

@Profile("test1")
class Test1Impl extends A

配置文件“test2”最终将有两个 bean,但不知道要连接哪个。

现在,只有这个有效:

@Profile("test2", "prod", ....)
class DefaultImpl extends A

@Profile("test1")
class Test1Impl extends A

除了在 DefaultImpl 中添加所有其他配置文件名称之外,我还能做些什么吗?

最佳答案

如果您不指定配置文件,您将获得“默认”配置文件。

因此,在您的示例中,如果您不使用配置文件,将加载 DefaultImpl。如果您将配置文件设置为测试:

@ActiveProfiles("test") or -Dspring.profiles.active=test

您将获得机器人 DefaultImpl 和 TestImpl

您可以进行更改以确保 DefaultImpl 不会运行测试:

@Profile("default")
@Component
class DefaultImpl implements A

关于java - 如何在Spring中设置多个配置文件的默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41716280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com