@vapasko

Как взаимодействуют компоненты в проекте Java + Spring?

Здравствуйте, у меня возник вопрос по взаимодействию в проекте Java + Spring классов и интерфейсов между собой. Подскажите, пожалуйста, почему, к примеру, в контроллер нужно импортировать и вытаскивать методы из интерфейса, который определен в сервисе? Почему не импортируется именно класс, который имплементирует этот интерфейс, а импортируется именно сам интерфейс, ведь в нем нет конкретной реализации методов. Заранее спасибо за ответ!

P.S. Если вас не трудно, могли бы поделиться ресурсами для изучения Java и Spring, буду очень благодарен
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
@My1Name
Думаю ответ на все эти вопросы - Multithreading, где фреймворк Spring является главным потоком, который собирает все наши интерфейсы и выполняет методы классов в своём стриме. Разработчик не может влазить в Runtime фреймворка, и тот в свою очередь не видит наши классы. То есть, классов может быть много, но все они наследуют логику сервлета через интерфейс фреймворка. В этом по идее заключается вся суть IoC (Inversion of Control and Dependency Injection).

p.s. Если я ошибаюсь, пусть меня поправят профессионалы.
Ответ написан
Комментировать
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Потому что способ получения данных может меняться. Например, сегодня ты получаешь данные напрямую из БД, а завтра она уедет на отдельный сервер и тебе будет предоставлен только какой-нить GraphQL. Ты перепишешь только свой класс доступа к данным, но так чтобы он реализовывал уже существующий интерфейс. Тогда весь остальной проект править не придётся.
Интерфейсы обеспечивают контракт - правила, по которым части приложения обмениваются данными между собой.
Благодаря этому, возможно на этапе планирования проекта "нарезать" приложение на интерфейсы, а потом раздать разработчикам задания на реализацию той или иной части. За счёт строгого контракта, повышается вероятность того что получившиеся части соберутся и заработают вместе :)

Что касается ресурсов, если "для самых маленьких", то:
- видео Наиля Алишева - объясняет подробно и понятно;
- курс Заура Трегулова, есть на Udemi, промокод у него на ютубе. Если нет возможности оплатить Udemi, он же есть на Stepik. Курс платный, но "по цене шаурмы";
- видео на каналах Евгения Сулейманова и LetsCode, там есть примеры создания проекта с нуля, можно познакомиться "как это вообще делается";
- можно почитать лекции здесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы