@ModelAttribute和@SessionAttributes的内存使用情况

时间:2013-07-20 22:26:21

标签: spring memory spring-mvc

我正在做Spring Web应用程序。我有一个表单,需要在表单GET和POST中加载表单对象。我有两种加载对象的方法:

  1. 通过在方法上注释的@ModelAttribute加载对象

  2. 通过表单的GET方法加载对象,并使用@SessionAttributes({“command”})注释表单控制器

  3. 我的问题是:

    对于具有大量同时在线用户的Web应用程序,使用@ModelAttribute方法是一个好主意吗?可以有所作为吗?

1 个答案:

答案 0 :(得分:1)

@ModelAttribute与@SessionAttributes的比较实际上是一种架构判断,即:有状态与无状态。

第三种选择是在表单中存储状态。这意味着当单击提交时,初始get方法中加载的数据将在帖子中发送,因此不需要重新加载。

第四个存储在cookie中的选项。

使用会话后需要考虑许多问题:

  • 在负载均衡架构中,如何在服务器之间发送会话,或者用户只保留一个服务器(粘性会话)
  • 如果重新启动服务器(持久会话)会发生什么?
  • 会话何时到期以及会议结束时会发生什么?

即使你有适当的架构来管理会话,因为它们需要系统内存应该保持最小化,而存储在数据库中的状态只需要磁盘空间,而存储在客户端上的状态只需要客户端存储器中。

还需要考虑安全性,存储在服务器上的状态比存储在客户端的状态更安全。