Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Обращение к сервисам / 7 сообщений из 7, страница 1 из 1
05.02.2013, 16:39:26
    #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
05.02.2013, 16:45:27
    #38138368
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к сервисам
scymaksи часто бывает так, что нужны эти сервисы по две или три "штуки".

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

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

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

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

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

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


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