Это скорее вопрос Java, чем вопрос Spring. Здесь происходит несколько вещей:
- Да, реализация может иметь больше методов, чем интерфейс, который она реализует.
- Поскольку вы не можете инициализировать интерфейс, как в случае Spring,он может только автоматически реализовать реализацию интерфейса для вашего компонента.
Давайте рассмотрим следующий пример:
У вас есть интерфейс SomeInterface
с методами methodA
, и онреализация SomeInterfaceImpl
с methodA
и methodB
.
Если вы автоматически связываете бин по его интерфейсу:
@Autowired private SomeInterface someInterface;
, тогда вы можете получить доступ только к methodA
(без явного приведения егона SomeInterfaceImpl
, очевидно), хотя у вас есть автоматическое подключение SomeInterfaceImpl
и реализовано methodB
.
Если вы автоматически подключите его:
@Autowired private SomeInterfaceImpl someInterface;
, тогда вы будетевозможность доступа к methodA
и methodB
. НТН.