简体   繁体   English

是否可以在Spring Boot应用程序中从自动配置中排除嵌套配置?

[英]Is it possible to exclude nested configuration from autoconfiguration in Spring Boot application?

Suppose we have a Spring Boot application and autoconfiguration with several configurations defined inside it 假设我们有一个Spring Boot应用程序和自动配置,其中定义了几个配置

@Configuration
@AutoConfigureBefore(MainAutoConfiguration.class)
public class TestAutoConfiguration {

    ....

    @Configuration
    public static class FirstNestedConfiguration {
        ...
    }

    @Configuration
    public static class SecondNestedConfiguration {
        ...
    }
}

this class is providing via external library dependency and all conditions are satisfied, so all beans in these configurations are loading. 这个类通过外部库依赖提供,并且满足所有条件,因此这些配置中的所有bean都在加载。

Nevertheless, I need to exclude beans provided in FirstNestedConfiguration Is it possible to do it? 不过,我需要排除FirstNestedConfiguration提供的FirstNestedConfiguration是否可以这样做?

UPD: as it's simple Spring Boot application, it runs as UPD:因为它是简单的Spring Boot应用程序,它运行为

@SpringCloudApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

without any explicit @ComponentScan configuration 没有任何明确的@ComponentScan配置

You might use excludeFilters in @ComponentScan like this: 您可以在@ComponentScan使用excludeFilters ,如下所示:

@ComponentScan(value = {'your.package'},
    excludeFilters = @Filter(TestAutoConfiguration.class))

Also, if you want to exclude specific autoconfiguration globally, use properties: 此外,如果要全局排除特定的自动配置,请使用以下属性:

spring:
  autoconfigure.exclude: your.package.TestAutoConfiguration 

However, please, note that this way you exclude outer configuration. 但请注意,这样就可以排除外部配置。 According to this issue it's not possible to exclude inner configuration. 根据这个问题 ,不可能排除内部配置。

Does the profile approach works for you? 配置文件方法是否适合您? Look for With the @Profile annotation section 查找With the @Profile annotation部分

 @Profile("ConfigOne")
 @Configuration

Configuration spring documentation 配置弹簧文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM