Java CDI是否为RequestScope重用代理?

Java CDI是否为RequestScope重用代理?,java,jakarta-ee,threadpool,cdi,proxies,Java,Jakarta Ee,Threadpool,Cdi,Proxies,如果我创建一个带@RequestScoped注释的bean,我希望它会用每个新请求实例化一个新的代理实例 另一方面,每个请求都与自己的线程相关联 我的问题是:如果新请求重用以前从池中创建的线程,CDI会重用以前创建的bean/服务的代理对象吗?首先,了解客户端代理对象很重要!=如果我们想遵循规范的措辞,可以使用bean实例或上下文实例。对于@RequestScoped,始终为每个请求创建一个新的bean实例。然而,@RequestScoped是一个普通的作用域,这意味着注入了一个客户端代理,该代

如果我创建一个带@RequestScoped注释的bean,我希望它会用每个新请求实例化一个新的代理实例

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


我的问题是:如果新请求重用以前从池中创建的线程,CDI会重用以前创建的bean/服务的代理对象吗?

首先,了解客户端代理对象很重要!=如果我们想遵循规范的措辞,可以使用bean实例或上下文实例。对于@RequestScoped,始终为每个请求创建一个新的bean实例。然而,@RequestScoped是一个普通的作用域,这意味着注入了一个客户端代理,该代理将委托给bean实例

现在回到您对客户机代理对象的问题—策略是特定于实现的。该规范规定,容器可以为每个bean实例化一个客户机代理对象,并在多个注入点之间共享它。但这不是必需的,请参见。参考实现Weld、WildFly、GlassFish等确实共享客户端代理对象。但是,我们要说的是客户机代理,而不是bean实例


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

首先,了解客户端代理对象非常重要!=如果我们想遵循规范的措辞,可以使用bean实例或上下文实例。对于@RequestScoped,始终为每个请求创建一个新的bean实例。然而,@RequestScoped是一个普通的作用域,这意味着注入了一个客户端代理,该代理将委托给bean实例

现在回到您对客户机代理对象的问题—策略是特定于实现的。该规范规定,容器可以为每个bean实例化一个客户机代理对象,并在多个注入点之间共享它。但这不是必需的,请参见。参考实现Weld、WildFly、GlassFish等确实共享客户端代理对象。但是,我们要说的是客户机代理,而不是bean实例


WRT线程关联-请求上下文与一个线程关联,但当请求结束时,上下文被破坏,包括所有bean实例,线程被解离。

所以答案是:否?不,答案是-是的,Weld可以重用代理对象。我的意思是,这是Martin所说的,我完全支持他的答案,这就是焊接的方式。但话说回来,这是内在的东西。CDI规范没有规定这应该如何工作。所以答案是:不?不,答案是-是的,Weld可以重用代理对象。我的意思是,Martin所说的暗示了这一点,我完全可以支持他的答案,Weld就是这样。但话说回来,这是内在的东西。CDI规范没有规定这应该如何工作。