Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Scope у Service класса / 9 сообщений из 9, страница 1 из 1
17.12.2012, 19:11:57
    #38082498
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
Подскажите пожалуйста, а какой scope у бинов в Service layer. То есть я ж не могу указать у него (в веб приложении)

Код: java
1.
2.
3.
4.
5.
6.
7.
@Service("loginService")
@Scope("request")
@Repository
@Transactional
public class LoginServiceJpa   implements LoginService
{
   



Такой scope - session, request - может быть только у Controller?
...
Рейтинг: 0 / 0
17.12.2012, 19:19:27
    #38082508
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
osonПодскажите пожалуйста, а какой scope у бинов в Service layer. То есть я ж не могу указать у него (в веб приложении)

Код: java
1.
2.
3.
4.
5.
6.
7.
@Service("loginService")
@Scope("request")
@Repository
@Transactional
public class LoginServiceJpa   implements LoginService
{
   



Такой scope - session, request - может быть только у Controller?
Почему?
Скоуп какой укажете такой и будет. Другое дело в уместности.
Так вот, если сервис stateless имеет смысл его сделать вообще синглтоном, Хотя сейчас создание объектов и GC заоптимизированы до не могу, так что не так уж и очевидно.
Скоуп сешн - какой смысл? Это уже не сервис.
Скоуп реквест - тоже редко имеет смысл, ну разве что в одной транзакции будут два вызова метода вашего сервиса и вам надо расшарить между вызовами какие то данные, но это bad design по определению, всяко лучше будет передавать в методы нужные параметры.
...
Рейтинг: 0 / 0
17.12.2012, 19:50:11
    #38082545
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
scope session и request работают в web application context. Если у вас бин создан в таком контексте то можно использовать такой scope. Service Layer aka Transaction Script обычно не имеет состояния. Session scope вообще под сомнением. Даже внутри одной сессии могут быть конкурентные запросы, поэтому нужно будет синхронизировать состояние.
Request возможен, но смысла в этом не много. В случае service у вас выйдут плохо реюзабельные методы, потому что они будут зависеть от состояние, которое нужно не забывать устанавливать.
Т.е. технически - можно. Практически - а зачем?
...
Рейтинг: 0 / 0
17.12.2012, 20:15:35
    #38082571
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
Есть же еще уровен Controller. Там уместно указать @Scope("request").
Но когда запрос от контроллера идет на Service - то как этот Service класс может отработать такой Scope?
У него ж нет понятия про http вообще - запрос до него не доходит, только до Controller.
Получается, что если для Service написать

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Service("loginService")
@Scope("request")
@Repository
@Transactional
public class LoginServiceJpa   implements LoginService
{
   private long counter;

   
}



то этот класс никогда не отработает такое поведение - то есть например если сделать 2 отдельных запроса со страницы и в первом назначить значение counter = 2, то во втором запросе ее значение так и будет 2 - хотя стоит scope = request.
То есть такую аннотацию нт смысла ставить вообще в классе Service - правильно?
...
Рейтинг: 0 / 0
17.12.2012, 20:17:49
    #38082574
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
osonНо когда запрос от контроллера идет на Service - то как этот Service класс может отработать такой Scope?
У него ж нет понятия про http вообще - запрос до него не доходит, только до Controller.

Это решается на этапе инъекции в контроллер.


osonто этот класс никогда не отработает такое поведение - то есть например если сделать 2 отдельных запроса со страницы и в первом назначить значение counter = 2, то во втором запросе ее значение так и будет 2 - хотя стоит scope = request.
То есть такую аннотацию нт смысла ставить вообще в классе Service - правильно?
Это странно.
...
Рейтинг: 0 / 0
17.12.2012, 21:31:47
    #38082622
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
То есть должен во втором запросе быть counter = 0? Должна работать аннотация @Scope("request") для Service layer ?
...
Рейтинг: 0 / 0
17.12.2012, 21:46:09
    #38082631
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
Какой поставишь такой и будет, ну 3 раза же уже сказали.
...
Рейтинг: 0 / 0
18.12.2012, 13:30:06
    #38083388
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
Так тестирую же и не работает - ставлю @Scope("request"), делаю 2 запроса со страницы (2 разные кнопки) - в первом устанавливаю переменную в 2 а вот втором ее читаю - она таки 2, не 0.
...
Рейтинг: 0 / 0
18.12.2012, 13:42:39
    #38083411
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scope у Service класса
osonТак тестирую же и не работает - ставлю @Scope("request"), делаю 2 запроса со страницы (2 разные кнопки) - в первом устанавливаю переменную в 2 а вот втором ее читаю - она таки 2, не 0.
А контроллер тоже @Scope("request")?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Scope у Service класса / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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