在Session Spring MVC中维护单例

时间:2012-06-11 14:35:29

标签: spring session spring-mvc singleton session-variables

我有2个会话范围的bean

1)sessionholder1 2)sessionholder2

两个会话持有者都有对象UserVO

class SessionHolder1{
private UserVO user = new UserVO();
}

class SessionHolder2{
private UserVO user = new UserVO();
}

现在,如果我在sesionholder1中更改userVO的某个变量,它也会在sessionholder2中更改。这种行为正常还是由于设计不良?

除了使用clone()之外,还有其他解决方法吗?请帮忙。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您在两者中存储相同的UserVO对象,那么当然在一个中更改某个字段将更改另一个中的字段。如果需要两个不同的对象,则创建两个不同的对象。如果一个是另一个的副本,最好的方法是使用复制构造函数:

/**
 * Constructs a copy of the given userVO
 */
public UserVO(UserVO userVO) {
    ...
}