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

Psy*_*nch 5 java spring spring-boot spring-java-config

我的代码中有以下注释:

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

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

tan*_*an9 2

@Configuration@ComponentScan比所有情况都更具确定性。

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

@Configuration
public class MyClassConfiguraiton {

    @Bean
    public MyClass myClass() {
        return new MyClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

@Import(MyClassConfiguratrion.class)
Run Code Online (Sandbox Code Playgroud)

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