CDI重复使用代理是否为requestScoped



如果我创建了用@RequestScoped注释的bean,我希望它将在每个新请求中实例化一个新的代理实例。

另一方面,每个请求都与其自己的线程相关联。

我的问题是:如果新请求重用先前从池中创建的线程?

首先,重要的是要了解 client oberxy object!= bean instance (或上下文实例,如果我们要遵循规格措辞)。对于@RequestScoped,总是为每个请求创建一个新的BEAN实例。但是,@RequestScoped是一个普通的范围,这意味着注入客户端代理(并且此代理委托会委托给BEAN实例)。

现在回到您的问题到客户端代理对象 - 该策略是特定于实现的。规格指出,一个容器可以每个bean实例化一个客户端代理对象,并在多个注入点之间共享。但这不是必需的(另请参见此文档)。参考实现(Weld,Wildfly,Glassfish等)确实共享客户端代理对象。但同样,我们谈论的是客户代理,而不是bean实例。

wrt线程关联 - 请求上下文与一个线程关联,但是当请求结束时,上下文被破坏(包括所有bean实例),并且线程分离。

最新更新