Spring中的作用域用于定義bean對象的生命周期和可見范圍。作用域可以控制bean對象的創建方式、銷毀方式以及在不同的上下文中是否共享。
以下是Spring中常用的作用域:
Singleton(默認):每個Spring容器中只有一個實例,默認情況下所有的bean都是單例的。在整個應用中,只會創建一個bean實例,并且該實例會在容器關閉時銷毀。單例作用域適用于無狀態的bean對象,例如服務層、數據訪問層等。
Prototype:每次從容器中獲取bean對象時都會創建一個新的實例。每次請求都會返回一個新的bean對象,不會復用之前的實例。適用于有狀態的bean對象,例如控制器、頁面組件等。
Request:每個HTTP請求都會創建一個新的bean實例,該實例僅在當前請求內有效。適用于Web應用程序中的請求處理過程中所使用的bean對象,確保每個請求之間的數據隔離。
Session:每個用戶會話都會創建一個新的bean實例,該實例僅在當前用戶會話內有效。適用于Web應用程序中需要跟蹤用戶狀態的場景,例如用戶登錄信息、購物車等。
Global Session:與Session作用域類似,但適用于Portlet環境下的全局會話。
通過使用不同的作用域,可以靈活地控制bean對象的生命周期和可見范圍,以滿足不同的業務需求。