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