Может ли impl bean весной иметь больше открытых методов, чем Interface? - PullRequest
0 голосов
/ 30 октября 2019

, если весной есть интерфейс с 1 абстрактным публичным методом и реализация этого интерфейса с 2 открытыми методами (1 - оверид, а второй публичный метод - дополнительный). Если мы автоматически подключим интерфейс, мы не сможем использовать второй публичный метод в impl. Это правильное поведение? В сборке maven он говорит, что использует IMPL bean-компонент и автоматически подключает его, но не может найти второй дополнительный публичный метод.

1 Ответ

1 голос
/ 30 октября 2019

Это скорее вопрос Java, чем вопрос Spring. Здесь происходит несколько вещей:

  1. Да, реализация может иметь больше методов, чем интерфейс, который она реализует.
  2. Поскольку вы не можете инициализировать интерфейс, как в случае Spring,он может только автоматически реализовать реализацию интерфейса для вашего компонента.

Давайте рассмотрим следующий пример:

У вас есть интерфейс SomeInterface с методами methodA, и онреализация SomeInterfaceImpl с methodA и methodB.

Если вы автоматически связываете бин по его интерфейсу:

@Autowired private SomeInterface someInterface;

, тогда вы можете получить доступ только к methodA (без явного приведения егона SomeInterfaceImpl, очевидно), хотя у вас есть автоматическое подключение SomeInterfaceImpl и реализовано methodB.

Если вы автоматически подключите его:

@Autowired private SomeInterfaceImpl someInterface;

, тогда вы будетевозможность доступа к methodA и methodB. НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...