Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 如何将@ConditionalOnProperty继承到任何静态内部@Configuration类?_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何将@ConditionalOnProperty继承到任何静态内部@Configuration类?

Java 如何将@ConditionalOnProperty继承到任何静态内部@Configuration类?,java,spring,spring-boot,Java,Spring,Spring Boot,如何创建一个包含静态内部配置类的@Configuration类并继承@ConditionalOnProperty @Configuration @ConditionalOnProperty(value = "my.property", havingValue = "true") public class MyConfiguration { @Configuration static class SubConfig1 { } @Configuration

如何创建一个包含静态内部配置类的
@Configuration
类并继承
@ConditionalOnProperty

@Configuration
@ConditionalOnProperty(value = "my.property", havingValue = "true")
public class MyConfiguration {
    @Configuration
    static class SubConfig1 {
    }

    @Configuration
    static class SubConfig2 {
    }

    ....
}

在本例中,我希望仅当父类上的条件为true时才加载内部类,因此我不必为每个配置类重复该条件。这可能吗?

您对所有用
@配置注释的嵌套类的理解都是错误的
将自动加载

在引导这样的安排时,只需要针对应用程序上下文注册AppConfig由于是嵌套的@Configuration类,DatabaseConfig将自动注册。这避免了在AppConfig和DatabaseConfig之间的关系已经隐式清除时使用@Import注释的需要

因此,通过使用
@ConditionalOnProperty
您只能避免在config类中声明的bean,但在条件指定之前,您无法避免带有
@Configuration
注释的嵌套类

例如,如果
my.property
false,则下面的方法将避免bean加载到
ApplicationContext

@Configuration
@ConditionalOnProperty(value = "my.property", havingValue = "true")
 public class MyConfiguration {

  @Bean
  public SubConfig1 getSubConfig1() {
     return new SubConfig1();
    }

  @Bean
  public SubConfig2 getSubConfig2() {
     return new SubConfig2();
    }

    static class SubConfig1 {
    }


   static class SubConfig2 {
   }


 }

因此,如果我理解如果
条件属性
的计算结果为真,那么我应该总共加载三个bean
MyConfiguration
subclofig1
subclofig2
,如果不是,请详细说明一下?是的,这是我的目标。如果条件匹配,它应该加载这3个子
@Configuration
类。但是,如前所述,如果条件不为true,甚至会加载所有这3个类。您可以显示
yml
properties
文件中指定的属性吗?
my.property=true
?因此,当您不想加载配置bean时,将其设置为
false