Подтвердить что ты не робот

Bean экземпляр более короткой области, введенной в экземпляр Bean с большим объемом в CDI - как он работает?

Рассмотрим следующий CDI bean с запросом:

@RequestScoped
public class RequestScopedBean {
    // ...
}

Теперь я вставляю его в область приложения bean:

@ApplicationScoped
public class ApplicationScopedBean {
    @Inject private RequestScopedBean requestScopedBean;
    // ...
}

Я запустил этот код и отметил, что экземпляр bean с областью запросов отличается друг от друга между двумя запросами, но экземпляр bean с областью приложения одинаковый. Я сомневаюсь: как это работает? Является ли экземпляр bean с областью запроса повторно привязан к полю области приложения при каждом запросе? Или прокси-приложение с областью действия bean просто изменяется между запросами?

4b9b3361

Ответ 1

В CDI каждый введенный объект на самом деле является прокси. Таким образом, в этом случае прокси, вероятно, содержит ссылку на RequestContext, и при каждом вызове метода получает правильный экземпляр bean.