2010-05-07 133 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範圍(默認)有兩種概念。