Spring中Bean的作用域有哪些?
在Spring的早期版本中,僅有兩個作用域:singleton和prototype,前者表示Bean以單例的方式存在;後者表示每次從容器中呼叫Bean時,都會返回一個新的例項,prototype通常翻譯為原型。
補充:設計模式中的建立型模式中也有一個原型模式,原型模式也是一個常用的模式,例如做一個室內設計軟體,所有的素材都在工具箱中,而每次從工具箱中取出的都是素材物件的一個原型,可以通過物件克隆來實現原型模式。
Spring 2.x中針對WebApplicationContext新增了3個作用域,分別是:request(每次HTTP請求都會建立一個新的Bean)、session(同一個HttpSession共享同一個Bean,不同的HttpSession使用不同的Bean)和globalSession(同一個全域性Session共享一個Bean)。
說明:單例模式和原型模式都是重要的設計模式。一般情況下,無狀態或狀態不可變的類適合使用單例模式。在傳統開發中,由於DAO持有Connection這個非執行緒安全物件因而沒有使用單例模式;但在Spring環境下,所有DAO類對可以採用單例模式,因為Spring利用AOP和Java API中的ThreadLocal對非執行緒安全的物件進行了特殊處理。
ThreadLocal為解決多執行緒程式的併發問題提供了一種新的思路。ThreadLocal,顧名思義是執行緒的一個本地化物件,當工作於多執行緒中的物件使用ThreadLocal維護變數時,ThreadLocal為每個使用該變數的執行緒分配一個獨立的變數副本,所以每一個執行緒都可以獨立的改變自己的副本,而不影響其他執行緒所對應的副本。從執行緒的角度看,這個變數就像是執行緒的本地變數。
ThreadLocal類非常簡單好用,只有四個方法,能用上的也就是下面三個方法:
- void set(T value):設定當前執行緒的執行緒區域性變數的值。
- T get():獲得當前執行緒所對應的執行緒區域性變數的值。
- void remove():刪除當前執行緒中執行緒區域性變數的值。
相關文章
- 【面試普通人VS高手】Spring 中Bean的作用域有哪些?面試SpringBean
- Spring中Bean的作用域SpringBean
- Spring 當中的Bean 作用域SpringBean
- Spring Bean作用域SpringBean
- Spring裝配Bean(六)Bean的作用域SpringBean
- 詳解Spring中Bean的作用域與生命週期SpringBean
- Spring學習(二)Bean 作用域SpringBean
- Springboot中的Bean作用域Spring BootBean
- spring bean的作用域和生命週期SpringBean
- Spring-bean作用域scope詳解SpringBean
- Spring中建立帶原型作用域bean5種方法Spring原型Bean
- SpringBean有哪些作用域?SpringBean
- JavaScript中[]作用有哪些JavaScript
- Spring:Bean的scope作用域案例講解以及Bean之間的依賴和繼承(3)SpringBean繼承
- spring_bean的作用域,spring使用外部屬性檔案和spring_SpEL(三)SpringBean
- Spring的作用域以及RequestContextListener作用SpringContext
- Spring 框架基礎(02):Bean的生命週期,作用域,裝配總結Spring框架Bean
- Spring中Bean及@Bean的理解SpringBean
- Spring中與bean有關的生命週期SpringBean
- Spring中的BeanSpringBean
- Spring Bean Scope 有狀態的Bean和無狀態的BeanSpringBean
- JavaScript中的作用域JavaScript
- CRM系統中的工作流有哪些作用?
- [spring-core]作用域Spring
- Spring Bean的5種作用域--主要是org.springframework.web.context.request.RequestContextListenerSpringBeanFrameworkWebContext
- 理解 JavaScript 中的作用域JavaScript
- vue中的css作用域VueCSS
- Spring中bean的含義SpringBean
- 物聯網路卡的作用有哪些
- ELK在大資料運維中,有哪些作用?大資料運維
- Linux中uuid是什麼?作用有哪些?LinuxUI
- Linux中Kdump是什麼?其作用有哪些?Linux
- js的作用域、作用域鏈JS
- Spring中bean的生命週期SpringBean
- (譯)理解javascript中的作用域JavaScript
- java中變數的作用域Java變數
- 對js中執行環境、作用域和作用域鏈的理解JS
- javascript沒有塊級作用域JavaScript