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

时间:2019-03-24 19:51:08

标签: java spring-boot configuration

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

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

    ....

    @Configuration
    public static class FirstNestedConfiguration {
        ...
    }

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

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

不过,我需要排除FirstNestedConfiguration中提供的bean 有可能做到吗?

UPD:由于它是简单的Spring Boot应用程序,因此运行方式为

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

没有任何明确的@ComponentScan配置

2 个答案:

答案 0 :(得分:0)

您可以像这样在Dim reader as StreamReader = My.Computer.FileSystem.OpenTextFileReader(OrderId & ".txt") Dim a as String ' This reads the first line, which we throw away reader.ReadLine() a = reader.ReadLine() reader.Close() Dim cells = a.Split(","c) dgvOutput.Rows.Add(cells) 中使用excludeFilters

@ComponentScan

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

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

但是,请注意,这样可以排除外部配置。根据{{​​3}},不可能排除内部配置。

答案 1 :(得分:0)

个人资料方法对您有用吗? 寻找With the @Profile annotation部分

 @Profile("ConfigOne")
 @Configuration

Configuration spring documentation