@grv1

Как объявить скоп сервиса так, чтобы при вызове в RabbitListener сервис был заново инициализирован?

До внедрения очереди у сервиса стояла аннотация @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) и при каждом http запросе сервис имел новый скоп. Необходимо тоже самое, но для каждого сообщения в очереди.
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 2
Э-э-э... может сервис сделать stateless, а не statefull?!
Ответ написан
zolt85
@zolt85
Программист
Для того, чтоб спринговый бин инициализировался каждый раз, когда он будет запрошен, его нужно отметить аннотацией
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
Тут есть некоторые нюансы, а именно, если Вы будете инжектить такой бин в другой бин, который является синглтоном (по-умолчанию), то заинжектится такой бин только один раз, соответственно по-факту это будет синглтон.
А если Вы будете просить такой бин в коде у ApplicationContext, то да, всегда будете получать новый инстанс бина.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект