Java 如何在不同的方法调用之间维护内存中的对象列表?

Java 如何在不同的方法调用之间维护内存中的对象列表?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有这个问题,使用SpringMVC,有一个列表(或一个对象),我用一个方法生成它,这个列表是由用户输入创建的。创建之后,我从方法(在我的控制器上)重定向到另一个方法,发送这个列表,然后我将它添加到模型中以在视图中显示它。。。完美无缺 比如说 我在methodA上创建了对象myObject。 从methodA我重定向到methodB发送myObject,methodB将其添加为modelAttribute并打印视图,我们将其称为viewA 在那之前一切都好 如果我想从viewA调用一个方法,me

我有这个问题,使用SpringMVC,有一个列表(或一个对象),我用一个方法生成它,这个列表是由用户输入创建的。创建之后,我从方法(在我的控制器上)重定向到另一个方法,发送这个列表,然后我将它添加到模型中以在视图中显示它。。。完美无缺

比如说

我在methodA上创建了对象myObject。 从methodA我重定向到methodB发送myObject,methodB将其添加为modelAttribute并打印视图,我们将其称为viewA

在那之前一切都好

如果我想从viewA调用一个方法,methodC和methodC将把我在methodB上发送到viewA的所有列表作为输入,该怎么办

当时我是这样做的

将控制器的范围声明为
会话
将myObject声明为public(类的变量)。 方法A、B、C很容易读取它,因为它是类上的公共变量

我想做的是避免为这个控制器使用作用域,而是让它在每个会话中都有一个作用域,让它成为单例(就像默认情况下一样)

你知道怎么做吗?

你可以尝试使用:

  • HashMap当SessionId-是用户会话的id时

  • HashMapwhen String-user name

  • ThreadLocal,但我不确定它是否正常工作


  • 您不应该将其用作控制器中的公共字段,因为您的控制器在多个请求之间共享,因此当多个用户使用该字段时,该字段的状态将不一致


    因此,要么使用会话,要么将对象的一些id传递给ui(隐藏输入或cookie),然后在下一个请求中重新创建对象。

    那么,启用范围注释可能是一个可行的解决方案?是的,然后从请求的会话中获取对象