@grv1

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

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

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

Войти через центр авторизации
Похожие вопросы