关于JSF会话管理如何工作的疑问
我得到了一个经理职位:
@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean implements Serializable
{
private String userName;
//getter and setter
private String password;
//getter and setter
// Getting through spring injection
@ManagedProperty(value="#{userBO}")
private UserBO userBO;
//setter method
public fetchUserDetails(){
User user = userBO.getUSer(this.userName);
//some processing
}
// more methods
.
.
.
}
既然bean是sessionScoped,JSF会在会话中保留我的"userBO"对象吗?我相信同时具有setter和getter的变量很可能存储在会话中。如果我错了,请纠正我。或者我必须将"userBO"声明为瞬态以便忽略它?
如果您的会话在请求之间被持久化在内存中,那么它引用的任何其他对象都将被保留,并且不符合垃圾收集的条件。没有任何任务可以遍历对象的内部设置对null
的引用。只有在创建bean时以及将其放入作用域之前,才会评估托管属性。
将userBO
设置为transient
只有在会话被序列化(通过钝化到磁盘、通过会话复制等)时才会生效