这可能更像是一个概念问题而不是技术问题,但是我希望您可以就如何继续向我提供一些建议。我们正在开发一个大型 Java EE 7 应用程序,该应用程序无状态地工作并从客户端获取请求。每个请求都包含一个会话 ID,每个会话都包含大量特定于会话的域对象。我们创建了一个 RequestScoped 类,其中包含我们领域对象的所有生产者方法。当请求带有会话 ID 时,我们调用生产者上的 setter 方法来设置生产者 CDI bean 中的会话 ID。现在,如果链上的 RequestScoped 类之一需要域对象之一,它在类的开头有一个 @Inject 定义,以从生产者那里获取域对象。
现在问题来了:假设 Bean A 注入域对象 X 并更改 X 上的一些属性。我是否必须在生产者中调用“更新”方法并将域对象 X 作为参数传递,还是在上下文中自动更新?在请求范围内注入后,CDI 容器会创建一个代理来访问实际的 bean。该代理是否可以像常规参考一样使用?例如,如果我在注入的 bean 上调用一个方法,它会更新代理后面的 bean 吗?