假设我们有一个 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
配置弹簧文档