SpringBoot excludeFilter不适用于多个配置类

时间:2018-08-28 22:16:18

标签: spring-boot filter spring-boot-configuration

我正在开发依赖于另一个springboot应用程序的springboot应用程序。我想将大多数bean包含在父springboot应用程序中,但其中一个。

如何在不触摸ParentApplication类的情况下排除父包已扫描的一个springboot bean?

我已经尝试过但无法正常工作的方式:

1:在我的应用程序类中使用排除过滤来过滤掉特定的bean类。

2:我还试图同时排除bean类和父配置类。

3:将DisposableBean接口添加到我想在运行时排除并销毁它的bean类。

下面是我的应用程序启动程序配置类和父类。

我的MyApplication.class:     包com.myapp;

@ComponentScan(
    basePackages = {"com.parent",{my own packages..}},
    excludeFilters= {
    @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value= {TheClassToExclude.class}),
    @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value= {ParentApplication.class})}   
)
@SpringBootApplication(exclude=ParentApplication.class)
public class MyApplication{

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

@PostConstruct
public void init() {
    System.out.println("App is initialized.");
}

}

我的ParentApplication.class

    package com.parent;


    @EnableRetry
    @EnableScheduling
    @SpringBootApplication(exclude = { HibernateJpaAutoConfiguration.class })
    @ComponentScan(basePackages = {all the base package including the TheClassToExclude}
    @PropertySource({all resources})
    public class ParentApplication {

    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    @PostConstruct
    public void haha() {
        System.out.println("configuration class created");
    }

控制台将打印出:“已创建配置类”,因此出于某种原因,parentApplication是由springboot启动的,因此我要排除的类也是如此。

0 个答案:

没有答案