考虑以下请求范围的CDI bean:
@RequestScoped public class RequestScopedBean { // ... }
现在,我将其注入到应用程序范围的bean中:
@ApplicationScoped public class ApplicationScopedBean { @Inject private RequestScopedBean requestScopedBean; // ... }
我运行了这段代码,并注意到两个请求之间的请求范围的Bean实例是不同的,但应用程序范围的Bean实例是相同的。我的疑问是:这如何运作?在每个请求时,是否将请求范围的Bean实例重新分配给应用程序范围的字段?还是应用程序范围的bean的代理只是在请求之间改变?
在CDI中,每个注入的对象实际上都是一个代理。因此,在那种情况下,代理可能持有对的引用,RequestContext并且在每个方法调用上都获得正确的bean实例。
RequestContext