powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Обращение к сервисам
7 сообщений из 7, страница 1 из 1
Обращение к сервисам
    #38138346
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Вот есть у меня скажем несколько сервисов:

ProductService , DeliveryService , PaymentService , ReportService , TrasportService
что все они делают не суть важно, будем считать, что коэффициент связности у них крайне маленький, то есть скажем не более двух связей имеет каждый сервис с другим сервисом.

И есть всякие контроллеры или другие сервисы, которые используют указанные выше сервисы.

и часто бывает так, что нужны эти сервисы по две или три "штуки".

То есть скажем в контроллерах часто нужны ProductService и ReportService .

Было решено сделать базовый контроллер и в нем сделать инъекцию этих сервисов примерно вот в таком виде:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
abstract class BaseController {
...
    @Autowired private ProductService productService;

    @Autowird private ReportService reportService;

    protected ProductService getProductService() { return productService; }
    
    protected ReportService getReportService() { return reportService; }
...
}



А потом в базовых контроллерах использовать эти методы для обращения к сервисам, вместо того, чтобы в каждом контроллере делать инъекцию.

Чем плох такой подход - мы закрываем наследование.

Идея #2:

создаем класс окружение, которое содержит в себе все сервисы:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Component("Environment")
class Environment {
...
    @Autowired private ProductService productService;

    @Autowird private ReportService reportService;

    protected ProductService getProductService() { return productService; }
    
    protected ReportService getReportService() { return reportService; }
...
}



А в контроллерах или еще где, в общем, там где нужно инъектим только Environment .

Минусы такого подхода я пока не вижу. А вы?
Если есть еще варианты, буду рад узнать)
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138368
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaksи часто бывает так, что нужны эти сервисы по две или три "штуки".

Нужно рассмотреть пару примеров, когда нужно несколько сервисов, чтобы в результате не оказалось что бизнес-транзакция уехала в контроллер.

scymaksЧем плох такой подход - мы закрываем наследование.

Кому закрываем? От чего закрываем? Если у вас все контроллеры будут наследоваться от своего общего предка, то никакой проблемы управлять такой иерархией не будет. Проблема может быть только если контроллерам нужно будет вдруг наследоваться от не контроллеров. Что было бы странным.
Минус в том что всем контроллерам доступны все сервисы, что делает слишком доступной возможность использовать несколько сервисов из контроллера, вместо того чтобы создать новый бизнес-метод.
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138397
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

а идея с Environment вам не нравится?
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138410
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaksа идея с Environment вам не нравится?
Ничем не лучше BaseController... Разве что если его оформить правильно и поместить туда логику вызова нескольких сервисов, вместо того чтобы держать её в контроллерах. Будет эдакий MasterService
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138523
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

была идея сделать Environment как класс Facade сервисов... Но тут надо не переработать... а то получится божественный класс..
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138553
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,
нужно конкретику смотреть, почему именно множественные сервисы вызываеются в контексте одного запроса.
...
Рейтинг: 0 / 0
Обращение к сервисам
    #38138735
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Хорошо. Пока подумаем еще.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Обращение к сервисам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]