же плохо service в service иметь?
Это вообще как ?
Кароче не помню кто то не раз говорил что фиговая тема инжектить в сервис ещё один сервис
Это не плохо пока нет https://refactoring.guru/ru/smells/feature-envy Вот пример https://elearning.industriallogic.com/gh/submit?Action=PageAction&album=recognizingSmells&path=recognizingSmells/featureEnvy/featureEnvyExample&devLanguage=Java
👍
Все равно сложный сервис должен какую то часть работы делегировать другому сервису, а не отвечать за все и иметь слабо связанный функционал
Привет. Речь шла о том, что фигово инжектить сервисы друг в друга, если они работают на одном и том же архитектурном слое (по дядебобской классификации). Если ты инжектишь хттпклиент в свой сервис-фасад, то в этом нет ничего опасного, потому что в хттпклиент ты свой сервис инжектить не станешь. Но если у тебя 2 или более сервиса-фасада и они, внезапно, зачем-то провайдят один другого, то очень высокий риск создать циклическую зависимость. Они могут перекрестно инжектить друг друга, их обоих может вызывать один компонент одновременно, они могут вызываться в компонентах с вложенностью, где один сервис вызывает верхний компонент, а второй - нижний... Короче вариантов выстрела в ногу масса и контролировать это очень сложно. Это основной момент. Менее явный, но по моему мнению более важный момент заключается в том, что необходимость инжектить один сервис в другой - это свидетельство плохой архитектуры, в нормальной ничего подобного делать не требуется. На вопрос о том, "как что-то там сделать если не", обычно отвечаю что-нибудь типа "тыж программист, так придумай способ", наша работа заключается в выборе наиболее подходящего решения из множества возможных, как говорил кто-то из "отцов")
Как быть если надо в сервис с апи методами заинжектить сервис авторизации чтобы понять например логин ис тру или нет. Такая практика много где используется и чем это плохо в качестве архитектуры ?
Это зависит от архитектуры вашего проекта, но, скорее всего, у вас транспортные сервисы перемешаны с бизнес-логикой, отсюда и ваша проблема. Ответственность API-сервиса - взаимодействие с сервером, там не должно быть бизнес-логики и поэтому ему нет необходимости инжектить сервис авторизации.
Обсуждают сегодня