【问题标题】:Is it a good practice to make one Spring bean inherit another one? [closed]让一个 Spring bean 继承另一个 Spring bean 是一种好习惯吗? [关闭]
【发布时间】:2019-12-06 12:17:48
【问题描述】:

在我的 Spring Boot Web 应用程序中,有两个 bean,其中一个继承了另一个,并且都实现了一个接口。这条线:

@Component 
public class A implements SomeInterface {
    // ....
} 

@Component 
public class B extends A implements SomeInterface {
    // ....
} 

让一个 bean 扩展另一个 bean 是个好主意还是使用装饰器更好?为什么?

我不是指任何具体情况,而是一般情况。

【问题讨论】:

  • 如果您要同时使用这两种方法,那么我不明白为什么不这样做。但实际上我什至不记得上次我个人有过类似的情况。大多数情况下,如果我扩展A,它将是抽象类

标签: java spring spring-boot design-patterns spring-bean


【解决方案1】:

否,因为如果您通过接口或超类注入它会失败。如果你现在注入 A,它是模棱两可的。

【讨论】:

  • 但是这个限定符可以解决,不是吗?
  • 是的 - 或者你做一个初级。但我反对它。
  • 我不赞成这种做法,只是说这个论点可以通过某种方式绕过
  • @ChristophGrimmer-Dietrich 所以你要发表意见。
  • @Cwrwhaf 关于问题中存在的代码:不。尝试注入SomeInterfaceA 的实例时,该代码将不起作用。关于包含限定符的评论:是的。这就是为什么我使用“反对它”这个词。
【解决方案2】:

询问这是否是一种好的做法是一个有点模棱两可的问题,它只会真正收集意见。 使用接口的一种方法是 @Autowire 实现类的所有实例并在每个实例上调用一个方法

@Autowired
List<SomeInterface> someInterfaces;


public void someAction(SomeObject object) {
    for(SomeInterface someInterface: someInterfaces) {
        someInterface.doSomething(object);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2016-12-19
    • 2019-07-17
    • 1970-01-01
    • 2013-03-30
    • 2015-08-03
    相关资源
    最近更新 更多