Iurii Iurchenko
спасибо за ссылку с примером - я ознакомлюсь ))
чёт вся драма пока выглядит немного высасанной из пальца.
реальная проблема в том, как правильно декомпозировать большое приложение на малые компоненты - это то на чём стоит фокусировать ментальные усилия. оно как бы не зависит от того на чём ты пишешь и какой фреймворк используешь.
в целом да, можно ванильно собирать из поджей, но тут достаточно быстро можно столкнуться с проблемой что есть некий сервис который надо пропихнуть в несколько других классов и ванильно делать это несколько мутарно - так что идея иметь маппинг (идентификатор сервиса :: имплементация сервиса) в одном месте, декларативно указать куда сервис вставлять и вставку как-то автоматизировать возникает естественным образом - и вот мы уже пишем свой спринг.
Я вижу такие проблемы:
- Если брать спринг с аннотациями, то чтото декомпозировать на малые компоненты будет очень муторно и неблагодарно. Они может и будут маленькие, но так как конфигурация как их связывать зашита внутри них а не снаружи, эффективно реюзать их не выйдет
- Сервис с т.з. ЕО - матерное ругательство. Егор скажет что сервис - не объект а сборник процедур (да, знаю, звучит неубедительно). Я добавлю что сервис почти всегда не сингл-респонсибл, его интерфейс не сегрегирован и из-за этого он как правило безмерно растет и жестко связывается с большим количеством зависимостей. Уследить за его ростом трудно, рефакторить потом муторно.