Мне нужно изменить объект сеанса пользователя (компонент SessionScoped - CDI) в сервлете, поэтому мне нужно каким-то образом получить этот компонент. Я использовал инъекцию следующим образом:
@Inject
private UserSession user;
где UserSession является компонентом SessionScoped CDI. user методы вызываются из методов сервлета doPost или doGet.
Это работает отлично; каждый раз, когда аннотация @Inject внедряет соответствующий компонент UserSession, но я не понимаю, как достигается такое поведение.
Я предположил, что компоненты, помеченные @Inject, вводятся только один раз (когда создается объект - в данном случае экземпляр сервлета), но это, очевидно, неверное предположение.
Итак, когда эти бобы вводятся в сервлет? По запросу? И как этот подход позволяет избежать конфликтов (один экземпляр сервлета - несколько потоков для его решения), когда существует несколько объектов UserSession?