春天的impl bean是否可以有比Interface更多的公共方法?

时间:2019-10-30 09:37:02

标签: spring spring-boot

如果在春季有一个带有1个抽象公共方法的接口,并且此接口具有2个公共方法的实现(1个是覆盖的,第二个公共方法是额外的)。如果我们为接口自动布线,我们将无法在impl中使用第二个public方法。这是正确的行为吗?在Maven构建中,它确实说过它正在使用和自动装配IMPL bean,但找不到第二个额外的公共方法。

1 个答案:

答案 0 :(得分:1)

更多的是Java问题,而不是Spring问题。这里发生了一些事情:

  1. 是的,一个实现可以具有比其实现的接口更多的方法。
  2. 由于无法初始化接口(例如在Spring中,因此只能将接口的实现自动连接到bean)。

让我们看下面的示例:

您有一个接口SomeInterface和方法methodA,它的实现SomeInterfaceImplmethodAmethodB

如果通过其接口自动装配bean:

@Autowired private SomeInterface someInterface;

然后,尽管您自动连接的是methodA并实现了SomeInterfaceImpl,但是您只能访问SomeInterfaceImpl(显然没有显式地将其强制转换为methodB

如果自动装配其实现:

@Autowired private SomeInterfaceImpl someInterface;

然后您就可以访问methodAmethodB。 HTH。