将范围较窄的 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/