如何从加载中排除 bean?

Raf*_*zcz 6 java spring spring-mvc

我在将外部库与 Spring 集成时遇到问题。它包含一个用 注释的类@Configuration,它有一个用 注释的方法@Bean。我不希望它被实例化(它不需要并且引入了对Spring Boot 的依赖,我不使用它。

不幸的是,这个带@Configuration注释的类在库的其他地方使用(类类型需要,而不是接口类型,所以我需要准确地实例化这个类)。

我从自动扫描中排除了它的包,我没有直接导入它。只需手动构建它并在自己的配置中注册为 bean。

所以,简而言之 - 我需要注册一个 bean,但将它从注释扫描中排除(不处理它的注释@Bean方法)。有什么办法可以做到这一点?

Yan*_*ski 7

如果你的意思是你的maven gradle中有库,那么你可以排除spring bean的初始化。我发现从 @ComponentScan 中排除 @Component

@Configuration
@EnableSpringConfigured
@ComponentScan(
    basePackages = {"com.example"},
    excludeFilters = {
        @ComponentScan.Filter(
            type = FilterType.ASSIGNABLE_TYPE,
            value = Foo.class)})
public class MySpringConfiguration {

}
Run Code Online (Sandbox Code Playgroud)

如果您不想包含传递依赖项,因此您不希望您的依赖项添加它使用的其他依赖项,则必须将它们从您的依赖项中排除(在 maven、gradle 中)。