当前位置: 首页 > 知识库问答 >
问题:

我怎样才能强制SpringBoot使用多个配置类中的一个,并且只能使用一个?

林正平
2023-03-14

我有一个项目中有两个不同的运行时(一个是lambda,一个是fargate)。我有两个不同的配置,但只希望运行一个。

如何排除和包含配置类?这似乎不起作用:

@SpringBootApplication(exclude = DynamoConfig.class)

而且由于它们位于相同的“路径”中,因此我不能仅排除软件包

com.cat.lakitu.runner

因为“持久”包也将被排除。

共有2个答案

上官思博
2023-03-14

有不同的解决方法。您选择哪一个取决于您的特定用例和需求。

使用配置文件:https://www.baeldung.com/spring-profiles

例子:

@Component
@Profile("runtime1")
public class DynamoConfig

使用条件 bean(多种可能性):https://reflectoring.io/spring-boot-conditionals/

@Component
@ConditionalOnProperty(
    value="module.enabled", 
    havingValue = "true", 
    matchIfMissing = true)
public class DynamoConfig
龙毅
2023-03-14

我会在两个配置上使用@ConditonalOnProperty注释,并在其中一个运行时的主运行中添加属性,以lambda为例(因为你说每次运行都使用不同的)

public static void main(String[] args) {
    SpringApplication application = new SpringApplication(DemoApplication.class);
    Properties properties = new Properties();
    properties.put("lambda.application", "true");
    application.setDefaultProperties(properties);
    application.run(args);
}

然后,在运行时为 lambda 时所需的配置上,您可以这样注释 Bean

    @ConditionalOnProperty(
        value="lambda.application",
        havingValue = "true")
public class DyanmoConfig {

然后,另一个bean可以具有以下条件属性

        @ConditionalOnProperty(
        value="lambda.application",
        havingValue = "false",
        matchIfMissing= true)
public class PersistConfig {

这样,您只需要在两个主窗口中的一个窗口中以编程方式设置属性

 类似资料:
  • 我有“下载正在进行文件”对话框活动。当用户按下“隐藏”按钮时,活动将创建通知和隐藏进度对话框。并且当用户单击到通知时,活动显示进度对话框再次出现在活动中。我如何在按下按钮“后退”时切换活动到后退任务?

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 我目前正在建设我的网站,我想有一个图标,显示在浏览器选项卡和书签区,并在移动设备上的主屏幕,如果我的用户想。我见过一些关于favicons和.ico的东西,但我见过的网站图标肯定超过16px×16px,我如何为我的网站制作一个图标,大于16px×16px,并实现它?见下面的屏幕截图,即质子邮件的图标不是16px乘16px。 谢谢你抽出时间!

  • 所以我有一个形式为X的矩阵,我试着读两个对角线,我读第一个,但我读第二个对角线很吃力。 为了前任。如果我给出数字2,3,4,它会输出矩阵: 2 0 0 0 3 0 0 0 4 但在这种情况下,我需要读其他对角线,但只读边中的数字,因为我已经读过数字3了。 这种情况只是当矩阵的大小是奇数时,但我也需要帮助,当它是奇数时,即使认为它会更容易,因为你只需要阅读两个对角线而不关心中间元素。 这是我到现在为

  • 我如何让这个代码有圆角?那有可能吗?也将只有第一个