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

我的代码中有以下注释:

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

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

最佳答案 在所有情况下,@ Configuration都比@ComponentScan更具确定性.

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

@Configuration
public class MyClassConfiguraiton {

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

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

@Import(MyClassConfiguratrion.class)

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

点赞