Reputation: 574
Suppose we have a Spring Boot application and autoconfiguration with several configurations defined inside it
@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.
Nevertheless, I need to exclude beans provided in FirstNestedConfiguration
Is it possible to do it?
UPD: as it's simple Spring Boot application, it runs as
@SpringCloudApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
without any explicit @ComponentScan configuration
Upvotes: 2
Views: 1490
Reputation: 751
Does the profile approach works for you?
Look for With the @Profile annotation
section
@Profile("ConfigOne")
@Configuration
Configuration spring documentation
Upvotes: 0
Reputation: 4365
You might use excludeFilters
in @ComponentScan
like this:
@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.
Upvotes: 0