簡體   English   中英

正確使用@Scope注釋是Spring 3 Web應用程序

[英]Using correctly the @Scope annotation is Spring 3 web application

我最近仔細閱讀了有關Spring MVC 3 Bean范圍的信息,特別是Web范圍(會話,請求和全局會話),並且我有一些疑問:如果我有一個控制器,為什么我要用單例之外的其他范圍為他注釋? 我的意思是,控制器只能處理請求並實例化所有應用程序的視圖資源,那么為什么要給它們提供例如會話范圍呢? 這樣做的好處是什么? 是否建議將服務層會話設置為作用域? 最后,是否有任何約定或良好做法規定使用每個Web范圍在何時何地更方便? 如果有,有人可以向我提供鏈接或有關此信息嗎? 沒有必要的約定或良好做法,也沒有您的經驗。 非常感謝。

我的意思是,控制器只能處理請求並實例化所有應用程序的視圖資源,那么為什么要給它們提供例如會話范圍呢?

在普通的Web應用程序中,每個會話中存在各種對象。 示例可以是用戶個人資料,某種櫥櫃或錢包等。

為了能夠在服務中使用這些對象,每次您都應該從會話中獲取並通過服務鏈時。 當然,與其這樣做,不如最好在服務中提供那些可用的功能,而無需顯式傳遞它。

您可以在這里找到一個很好的例子(在實踐中)。

請求范圍bean的一個理想的實際示例是HttpServletRequest ,對於每個請求,它顯然應該是唯一的,因此,它是為每個請求確定范圍並創建的。

根據我的經驗,不需要任何明確的案例,您不必費心更改范圍。 並非沒有原因,默認范圍是Singleton,這是有目的的-因為在大多數應用程序和基本方案中,您都需要bean作為Singleton。 但是,由於您主要關注的是Session和Request范圍,因此上述示例是Web應用程序中經常需要的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM