【发布时间】:2012-07-06 18:48:50
【问题描述】:
我有一个 JSF 管理的会话范围 bean。它也是一个弹簧组件,因此我可以注入一些字段:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.springframework.stereotype.Component;
@ManagedBean
@SessionScoped
@Component
public class EpgBean {...}
问题是会话是在用户之间共享的!如果一个用户做了一些事情并且另一台计算机上的另一个用户连接,他会看到另一个用户的 SessionScoped 数据。
是不是因为 spring @Component 会迫使 bean 成为单例?处理这个问题的正确方法是什么?
【问题讨论】:
-
我不使用 Spring,但理论上您应该摆脱那些未使用的 JSF 托管 bean 注释(因为那只会让您感到困惑;如果您使用另一个框架来管理,它们根本不会被使用bean)并添加一个 Spring 特定的范围注释,例如
@Scope("session")左右(它确实默认为“应用程序”范围,就像当没有声明 JSF 特定范围注释时 JSF 默认为“无”范围一样)。跨度>