我有一个使用Spring Session和Redis的web服务 . 当我调用每个Web服务操作时,会话对象从redis实现,并且当操作完成时,此对象将保存到redis服务器 . 当我想要更改会话的值并且同一会话同时运行多个操作时,会出现问题 . 如果更改会话的操作不是最新完成,则执行更改将丢失(每个操作都会保存自己的会话) . 是否可以避免此问题向webservice指示只能保存会话对象的一些特殊操作而不是所有操作?

对我来说错误的代码是这样的:

@Component
@Scope(value=WebApplicationContext.SCOPE_SESSION,  
       proxyMode=ScopedProxyMode.TARGET_CLASS)
public class SessionInfo implements Serializable
{
    private String sellerName;
    public String getSellerName() { 
         return (sellerName==null) ? "" : sellerName; }
    public void setSellerName(String sellerName) { 
         this.sellerName = sellerName;}
}

如果我调用操作 A() 并且它更改卖方名称调用 setSellerName() 并且此调用是在执行另一个名为 B() 的操作期间加载SessionInfo但不更改它并且 A()B() 之前完成我丢失了卖家名称更改因为 B() 完成它覆盖由 A() 设置的值