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

时间:2019-02-20 10:08:43

标签: java spring dependency-injection override abstract-class

我正在重写抽象类的@bean注释方法。我这样做是为了防止从该抽象类创建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。我该怎么做才能防止父类的@bean被解雇?

1 个答案:

答案 0 :(得分:0)

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

class MyClass extends AbstractClass {

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

}

如果您的孩子在春季被扫描,则无法阻止抽象类中的Bean注册。覆盖父方法时,您可以控制Bean创建逻辑。