在SpringMVC会话中维护单例

在SpringMVC会话中维护单例,spring,session,spring-mvc,singleton,session-variables,Spring,Session,Spring Mvc,Singleton,Session Variables,我有2个会话范围的bean 1) 会议主持人1 2) 会议主持人2 两个会话持有者都有对象UserVO class SessionHolder1{ private UserVO user = new UserVO(); } class SessionHolder2{ private UserVO user = new UserVO(); } 现在,如果我在sesionholder1中更改userVO的某个变量,它在sessionholder2中也会更改。这种行为是正常的还是由于糟糕的设计 除

我有2个会话范围的bean

1) 会议主持人1 2) 会议主持人2

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

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

class SessionHolder2{
private UserVO user = new UserVO();
}
现在,如果我在sesionholder1中更改userVO的某个变量,它在sessionholder2中也会更改。这种行为是正常的还是由于糟糕的设计

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

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

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

您好,当我在两个会话持有者中创建新的userVO()对象时,它仍然意味着相同的对象吗?请澄清..不,它们将引用两个不同的对象。在我提供的代码片段中,我不是创建了两个新对象吗?两个对象中的值仍然会更改。也许您以后可以用一个对象替换这两个对象。或者这两个对象引用了您正在修改的另一个公共对象。只有这些代码行可用,我只能猜测。非常感谢..“也许你以后会用一个对象替换这两个对象”,这正是我正在做的..再次感谢。。