Spring如何管理会话?

时间:2019-10-07 06:10:55

标签: java spring performance spring-boot

我有一个小型的springboot应用程序,它可以上传文件,并对其做一些工作。并返回另一个文件。我已经使用reactJS实现了前端。有一个静态变量保存文件名。一个文件就可以正常工作。但是,当我向它扔多个文件时,最后上传的文件将覆盖每个操作的静态变量。我是Spring的新手,我已经阅读了每个请求是在不同的容器中处理的。我不明白一个“容器”如何在另一个“容器”中引起骚动?

1 个答案:

答案 0 :(得分:1)

您对“不同容器中的请求”的理解是完全错误的。 Spring不能直接处理会话。嵌入式Servlet引擎(通常是Tomcat)会这样做,除非您专门包含诸如Spring Session之类的东西来肯定负责处理。

但是,无论哪种情况,这都与会话无关,而与共享状态无关(无论是静态的还是通过Singleton Spring bean)。为每个请求启动应用程序的全新副本将非常昂贵,即使您这样做,在两次请求之间仍然会丢失状态。您需要(不太理想)将变量存储在session attribute中,或者(最好)返回某种具有HTTP 202接受状态的ID,并保留一个内部表,以便以后进行检查。