java - 将 EVENT 范围的 bean 注入(inject)到 CONVERSATION/SESSION 范围的 bean 中是否更安全?

标签 java jakarta-ee dependency-injection seam

将范围较窄的 bean 注入(inject)范围较广的 bean 是否安全?

Seam CDI 是否会处理它以找出当前的 EVENT/REQUEST/PAGE 上下文以正确注入(inject) SESSION/CONVERSATION bean。

我的观点是。我不希望一个页面/事件的对象与其他页面/事件的数据混淆。

我总是可以在方法中使用 Component.getInstance() 来确保我无论如何都能获得当前事件/页面的 bean。但我想为此使用 @In(scope = ScopeType.EVENT)

最佳答案

session 和页面范围内的组件默认是同步的。因此,向其中注入(inject)一个事件范围的组件(例如 EntityManager)应该是安全的。由于是同步的,因此两个请求不会干扰两个不同的注入(inject)对象。

为了完全确定您不会遇到并发问题,我建议您不要注入(inject)这些组件,而是从组件存储库中获取它们:

MyComponent myComponent = (MyComponent) Component.getInstance("myComponent");

关于java - 将 EVENT 范围的 bean 注入(inject)到 CONVERSATION/SESSION 范围的 bean 中是否更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687843/

相关文章:

java - 如何设置网格布局中按钮的位置?

java - 如何在 Hibernate 中执行非多态 HQL 查询?

java - Java中编译C的时间间隔定义

用自定义字符串替换美元符号 ($) 变量的 Java EE 方法

c# - 如何使用具有多个页面和导航的 WPF 处理依赖注入(inject)?

dependency-injection - DI容器如何工作的最简单解释?

java - Android:在 `onClick` 事件上全屏显示带有标题的图像

java - Android:服务不会绑定(bind)

java - 如何避免捕获 EJB Rollbacked ApplicationException 后回滚?

.net - 使用外部 DLL 的 DI