如何排除@ComponentScan下的所有@Component类除外?

时间:2016-08-02 14:01:26

标签: java spring spring-boot spring-java-config

我的代码中有以下注释:

@ComponentScan(basePackageClasses={MyClass.class},
            excludeFilters={@Filter(Component.class)}, //@Component
            includeFilters={@Filter(type=ASSIGNABLE_TYPE, classes=MyClass.class)}
        )

MyClass使用@Component进行注释,但仍希望在组件扫描期间包含它。但是,组件扫描过滤器似乎使用和逻辑而不是或。我如何实现我想做的事情?

1 个答案:

答案 0 :(得分:1)

在所有情况下,

@Configuration@ComponentScan更具确定性。

而不是解决@ComponentScan注释。您应该尝试将MyClass.class类中的@Configuration明确列为@Bean,例如:

@Configuration
public class MyClassConfiguraiton {

    @Bean
    public MyClass myClass() {
        return new MyClass();
    }
}

然后显式@Import配置类而不是@ComponentScan注释:

@Import(MyClassConfiguratrion.class)

或者通过组件扫描机制导入它(因为@Configuration使用@Component进行元注释。)