Ответ 1
В CDI каждый введенный объект на самом деле является прокси. Таким образом, в этом случае прокси, вероятно, содержит ссылку на RequestContext
, и при каждом вызове метода получает правильный экземпляр bean.
Рассмотрим следующий CDI bean с запросом:
@RequestScoped
public class RequestScopedBean {
// ...
}
Теперь я вставляю его в область приложения bean:
@ApplicationScoped
public class ApplicationScopedBean {
@Inject private RequestScopedBean requestScopedBean;
// ...
}
Я запустил этот код и отметил, что экземпляр bean с областью запросов отличается друг от друга между двумя запросами, но экземпляр bean с областью приложения одинаковый. Я сомневаюсь: как это работает? Является ли экземпляр bean с областью запроса повторно привязан к полю области приложения при каждом запросе? Или прокси-приложение с областью действия bean просто изменяется между запросами?
В CDI каждый введенный объект на самом деле является прокси. Таким образом, в этом случае прокси, вероятно, содержит ссылку на RequestContext
, и при каждом вызове метода получает правильный экземпляр bean.