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



假设我们有一个 Spring Boot 应用程序和自动配置,其中定义了几个配置

@Configuration
@AutoConfigureBefore(MainAutoConfiguration.class)
public class TestAutoConfiguration {
....
@Configuration
public static class FirstNestedConfiguration {
...
}
@Configuration
public static class SecondNestedConfiguration {
...
}
}

此类通过外部库依赖项提供,并且满足所有条件,因此正在加载这些配置中的所有 bean。

尽管如此,我需要排除FirstNestedConfiguration中提供的豆子 有可能做到吗?

UPD:因为它是简单的 Spring 启动应用程序,因此它运行为

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

没有任何显式@ComponentScan配置

您可以在@ComponentScan中使用excludeFilters,如下所示:

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

此外,如果要全局排除特定的自动配置,请使用属性:

spring:
autoconfigure.exclude: your.package.TestAutoConfiguration 

但是,请注意,这样您排除了外部配置。根据此问题,无法排除内部配置。

配置文件方法适合您吗? 查找With the @Profile annotation部分

@Profile("ConfigOne")
@Configuration

配置弹簧文档

最新更新