覆盖抽象class的@bean方法以防止bean注入

Overriding @bean method of abstract class to prevent bean injection

我正在覆盖抽象 class 的 @bean 注释方法。我这样做是为了防止从那个抽象 class.

创建 bean
class AbstractClass {

    @Bean
    OperationClass injectBean() {
        //injects its own type of OperationClass
    }
}


class MyClass extends AbstractClass {

    @Bean(name="customOperation")
    OperationClass injectBean() {
        //inject my own bean
    }

}

但是,此代码最终在 spring 上下文中注册了 2 个 bean。我应该怎么做才能防止 parent class 的@bean 被解雇?

@Bean 注释方法返回 null 不会注册 bean。

class MyClass extends AbstractClass {

    @Bean(name="customOperation")
    OperationClass injectBean() {
        return null;
    }

}

如果您的 child 被 spring 扫描,则无法阻止摘要 class 的 bean 注册。在覆盖 parent 方法时,您可以控制 bean 创建逻辑。