2011-05-27 50 views
5

任何人都可以幫助我瞭解自定義範圍。我通過手冊和許多在線示例來了解它是如何實現的。但是,我仍然不清楚爲什麼我們需要一個自定義代理,爲什麼我們會去,限制了bean的範圍。爲什麼我們會在春季使用自定義範圍?何時需要?

據我所知,對於一個單例,我們使用單當我們想要一個bean必須考慮到所有引用&我們使用的原型時,我們希望每個bean被引用時被賦予了新的參考。

現在我對於自定義範圍的理解是
定製Scope-我們使用自定義的範圍,因爲兩者之間的中途既不是我們要通過每一次.. 單一的參考,也不是一個新的參考,但隨後是更接近單身人士,我們每次都通過同一個bean,只是從我們的首選位置(例如底層threadlocal或map)傳遞。

請幫助我使我的概念清晰..這裏的主要問題是爲什麼定製範圍?什麼時候需要?

回答

3

這實際上手頭取決於問題。例如,你可能想創建一個預定義數量的特定bean的實例,但不會超過這個。因此,在這個數字被滿足之前,你一直在創建新的實例,但是一旦符合這個數字,你就可以以平衡的方式返回現有的實例。

這可以被應用到該實例佔用資源的顯著量(例如,內存),但如果使用新的實例加速應用程序的問題。因此,您可以在需要時創建可用數量的新對象,並在實例數量超出該數量時將其委託到現有的對象中(降低資源利用率的性能)。

4

在不同的上下文中。例如 - 在Web應用程序中。這裏定義了兩個範圍 - 「請求」和「會話」。但是,這些有時是不夠的。通常需要一個「閃光」範圍(持續一個請求和隨後的重定向)或「對話」範圍(持續形成對話的一系列請求)。

在這樣的和類似的情況下,使用定製的範圍。

+0

感謝@Bozho用於解釋恰當的例子問題,但我在Java EE的新手,只有春天的參考手冊,作爲我的春天的信息來源。你能否爲這些範圍的詳細例子建議一些好的鏈接/參考文獻/書籍。 – 2011-05-30 06:50:41

+0

並按照由勒芒給出的答案我的理解是:「我們使用自定義範圍的性能問題(在應用上下文)」和關於網絡的背景下 - 維護會話具體細節(每節範圍), 處理相關信息到單個請求(範圍每個請求) 和閃光和對話創建如您在回答 – 2011-05-30 06:56:11

+0

中提到的春季文檔應該是足夠的。 – Bozho 2011-05-30 07:11:39