【问题标题】:Overriding @bean method of abstract class to prevent bean injection覆盖抽象类的@bean方法以防止bean注入
【发布时间】:2019-02-20 10:08:42
【问题描述】:

我正在重写抽象类的 @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被解雇?

【问题讨论】:

  • 真的需要继承吗?
  • 是的!我想你有我的问题。
  • 看看@ConditionalOnBean@ConditionalOnMissingBean
  • 看到了。您如何建议,他们解决了上述问题?
  • 我想你可以参考这个stackoverflow.com/questions/53245766/…

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


【解决方案1】:

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

class MyClass extends AbstractClass {

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

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多