【问题标题】:Memory usage of @ModelAttribute and @SessionAttributes@ModelAttribute 和 @SessionAttributes 的内存使用情况
【发布时间】:2013-07-20 22:26:21
【问题描述】:

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

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

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

我的问题是:

将@ModelAttribute 方法用于具有大量同时在线用户的Web 应用程序是否是个好主意?能改变吗?

【问题讨论】:

    标签: spring memory spring-mvc


    【解决方案1】:

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

    还有第三个选项可以将状态存储在表单中。这意味着当点击提交时,初始get方法中加载的数据在post中发送,因此不需要重新加载。

    还有第四个选项存储在 cookie 中。

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

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

    即使您拥有管理会话的架构,也应该将使用量保持在最低限度,因为它们需要系统内存,而存储在数据库中的状态只需要磁盘空间,而存储在客户端上的状态只需要客户端记忆。

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

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多