Вообщем я решил забить на них в своих проектах и подключать в компонентах не интерфейсы, а сами используемые компоненты. Это по моему мнению упрощает структуру проекта. Но боюсь старшие товарищи меня заругают, скажут так неправильно, не solidно, зависимости, непричесанные интерфейсы, трудно отслеживать single responsibility.
Вопросы правильные и интересные.
Spring вообще очень сильно девальвировал ООП. Он превнес туда целый спектр вопросов в части аспектного программирования. Аннотации SpringData, SpringWeb, SpringSecurity. И поэтому само по себе обсуждение ООП стало вторичным. Важнее Bean. Lifecycle бина. Способы его инжекции в другие бины и прочее.
Кстати предлагаю тебе ради интереса взять какой-то pet-проект и просто переписать его без Spring. Хороший творческий челлендж. Я так делал. Потом можно попробовать Dagger2 / Guice в качестве инжекторного двигателя добавить сбоку. Там правда будет меньше других возможностей но мне кажется что для большинства проектов этого достаточно. А может быть проект даже станет проще.
Это кстати прямое следованию принципов KISS/Yagni. Так что твои коллеги-теоретики потеряют часть своих аргументов. Будешь бить их простотой. Santa simplicitas.