Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制SpringBoot使用多个配置类中的一个,并且只能使用其中一个?_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何强制SpringBoot使用多个配置类中的一个,并且只能使用其中一个?

Java 如何强制SpringBoot使用多个配置类中的一个,并且只能使用其中一个?,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个项目,其中有两个不同的运行时(一个是lambda,一个是fargate)。我有两个不同的配置,但只想运行一个 如何排除和包含配置类?这似乎不起作用: @SpringBootApplication(exclude = DynamoConfig.class) 由于它们位于同一“路径”,我不能仅排除包 com.cat.lakitu.runner 因为“persist”包也将被排除。有不同的解决方法。您选择哪一个取决于您的特定用例和需求 使用配置文件: 例如: @Component @Pr

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

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

@SpringBootApplication(exclude = DynamoConfig.class)
由于它们位于同一“路径”,我不能仅排除包

com.cat.lakitu.runner

因为“persist”包也将被排除。

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

使用配置文件:

例如:

@Component
@Profile("runtime1")
public class DynamoConfig
使用条件bean(多种可能性):


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

使用配置文件:

例如:

@Component
@Profile("runtime1")
public class DynamoConfig
使用条件bean(多种可能性):


我将在两个配置中使用@ConditonalOnProperty注释,并在其中一个运行时的主运行时中添加属性,例如lambda(因为您说过每个运行使用不同的一个)

然后,在运行时为lambda时所需的配置上,可以对bean进行注释

    @ConditionalOnProperty(
        value="lambda.application",
        havingValue = "true")
public class DyanmoConfig {
然后,另一个bean可以具有以下条件属性

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

这样,您只需在两个main的其中一个中以编程方式设置属性

我将在两个配置中使用@ConditonalOnProperty注释,并在其中一个运行时的main中添加属性,例如lambda(因为您说每个运行使用不同的一个)

然后,在运行时为lambda时所需的配置上,可以对bean进行注释

    @ConditionalOnProperty(
        value="lambda.application",
        havingValue = "true")
public class DyanmoConfig {
然后,另一个bean可以具有以下条件属性

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

通过这种方式,您只需在两个主要应用程序之一中以编程方式设置属性

如何使用配置文件?我们已经在使用配置文件,但目前这两个应用程序的配置文件是相同的。这将是非常侵入性的。您可以使用Spring拥有多个活动配置文件。你能详细说明一下在这里使用概要文件是如何“侵入性”的吗?我们目前在AWS中有很多构建脚本等等。这将包括几个字段的重命名和大量文件的胖指法。在我们的使用案例中,我们想要一些不那么侵入性的东西。使用第一个配置或第二个配置的条件是什么?使用配置文件怎么样?我们已经在使用配置文件,但目前这两个应用程序的配置文件是相同的。这将是非常侵入性的。您可以使用Spring拥有多个活动配置文件。你能详细说明一下在这里使用概要文件是如何“侵入性”的吗?我们目前在AWS中有很多构建脚本等等。这将包括几个字段的重命名和大量文件的胖指法。在我们的用例中,我们想要一些不那么侵入性的东西。使用第一个配置或第二个配置的条件是什么?所以我们已经使用了“dev”、“qa”、“prod”配置文件。但我们还需要一个。如何设置多个?如果您使用的是最新的Spring启动版本,您可以添加多个配置文件,如下所示:@Profile({“profile1&profile2”})我相信这是您使用它们的方式,而不是设置它们的方式。我可能错了。@markthegrea,这样我们已经使用了“dev”、“qa”、“prod”配置文件。但我们还需要一个。如何设置多个?如果您使用的是最新的Spring启动版本,您可以添加多个配置文件,如下所示:@Profile({“profile1&profile2”})我相信这是您使用它们的方式,而不是设置它们的方式。“我可能错了。”马克说。谢谢完美的谢谢