2010-05-07 114 views
0

这在我看来,“会话”范围的另一种方式使用setAttrubute /的getAttribute春“会话”的bean的范围

正确保持物体会话

你知道,不知道为什么,它不适合我。

<豆ID = “sabreUser” 级= “util.MyUser” 工厂法= “getSomeUser” 范围= “会话” >

<常量ARGS ... >

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

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

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

这是什么意思?

我希望这个对象在新会话开始时被初始化。但最好看起来像单身人士,尽管你看到 - “会话”属性被设置。

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

+0

这些方法在哪里setProperty/getProperty? – Bozho 2010-05-07 13:18:49

回答

1

Spring会话并不完全匹配HttpSession,甚至@SessionAttributes注释中的Spring文档都说它可能存储在会话或“某些会话式存储”中。我从The Spring docs for 2.5 我已经基本退出试图理解它,并刚刚开始我的生活,如果我想存储在HttpSession中的东西,我只是有Spring注入HttpSession给我,假设你正在使用Spring MVC其相当简单,说明在同一页上。

1

会话范围的bean是遍历http会话的bean。它们以某种方式通过setAttribute存储在会话中。

所以 - 是的。

1

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

相关问题