【问题标题】:Spring "session" scope of a beanbean的Spring“会话”范围
【发布时间】:2010-05-07 13:15:53
【问题描述】:

在我看来,“会话”范围是另一种将会话中的对象保持为

使用 setAttrubute / getAttribute

正确吗?

你知道,不知道为什么,它对我不起作用。

我看到的是,在初始化和初始部署之后,MyUser 属性是正确的。

然后,在我更改 MyUser 属性的第一个会话中,会话关闭。

第二个会话运行,它看到上一个会话的最后一个设置值!

这是什么意思?

我希望这个对象在新会话开始时被初始化。但它更好地看起来像单例,虽然你看到 - “会话”属性设置。

我可以看到问题的原因在于 Servlet 的字段是使用 @Autowired 初始化的 因此,一旦它被初始化,每个其他会话都会看到它的字段设置并且不会“重新连接”这个属性。它发生一次?如何克服这个问题?

【问题讨论】:

  • setProperty / getProperty 这些方法在哪里?

标签: java spring scope


【解决方案1】:

Spring 会话与 HttpSession 不完全匹配,甚至 @SessionAttributes 注释上的 Spring 文档也说它可能存储在会话中或“一些会话存储”中。我是从The Spring docs for 2.5那里得到的 我基本上已经不再试图理解它,而是继续我的生活,如果我想要存储在 HttpSession 中的东西,我只需让 Spring 将 HttpSession 注入我,假设你使用 Spring MVC 很容易,同一页面上的说明。

【讨论】:

    【解决方案2】:

    会话范围的 bean 是贯穿整个 http 会话的 bean。它们以某种方式通过setAttribute 存储在会话中。

    所以 - 是的。

    【讨论】:

      【解决方案3】:

      Session 范围的 bean 由 Spring 框架存储在 Http Session 中。此范围仅在 Web 应用程序的上下文中有效。它也适用于 Portlet 环境。在 Portlet 环境中使用时,有两个概念,即会话、应用程序范围和 Portlet 范围(默认)。

      【讨论】:

        猜你喜欢
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 2013-02-26
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        • 2011-07-05
        相关资源
        最近更新 更多