Spring配置檔案中標籤的scope屬性

2021-09-08 04:17:57 字數 1494 閱讀 6646

**:

singleton  (預設屬性) 

spring將bean放入spring ioc容器的快取池中,並將bean引用返回給呼叫者,spring ioc繼續對這些bean進行後續的生命管理。beanfactory只管理乙個共享的例項。所有對這個特定bean的例項請求,都導致返回這個唯一 bean例項的引用。 

即每次拿到的物件都是引用的同乙個位址的物件。當乙個bean被標識為singleton時候,spring的ioc容器中只會存在乙個該bean。 

2.prototype 

spring將bean返回給呼叫者,呼叫者負責bean後續生命的管理,spring不再管理這些bean的生命週期。 

每次對這個bean的例項請求都會導致乙個新的例項的建立。當使用者需要不受其他使用者物件影響的物件或有類似的需求時,這是乙個較理想的解決辦法。 

即每次拿到的物件都是引用的不同位址的物件。相當於乙個new的操作。清除prototype作用域的物件並釋放任何prototype bean所持有的昂貴資源,都是客戶端**的職責 

以下的3種scope都使用的較少,類似於j2ee裡面的request和session。在使用springmvc是可能會用到。 

3.request 

‍request表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http request內有效,配置例項: request、session、global session使用的時候首先要在初始化web的web.xml中做如下配置:如果你使用的是servlet 2.4及以上的web容器,那麼你僅需要在web應用的xml宣告檔案web.xml中增加下述contextlistener即可: 

‍org.springframework.web.context.request.requestcontextlistener 

4.session 

‍session作用域表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http session內有效 

5.global session 

‍global session作用域類似於標準的http session作用域,不過它僅僅在基於portlet的web應用中才有意義。portlet規範定義了全域性session的概念,它被所有構成某個 portlet web應用的各種不同的portlet所共享。在global session作用域中定義的bean被限定於全域性portlet session的生命週期範圍內。如果你在web中使用global session作用域來標識bean,那麼web會自動當成session型別來使用 

對於action來說需要指明scope=」prototype」或singleton=」false」,因為action是執行緒不安全的,可能會導致跳轉的頁面錯誤。 

對於帶有資料成員變數的類需要指明scope=」prototype」或singleton=」false」。不然這樣會導致多個執行緒共用同乙個成員變數。 

有狀態的bean都使用prototype作用域,而對無狀態的bean則應該使用singleton作用域。

五 解決Spring配置檔案中標籤不提示

本文主要解決的是當不能上網的環境下出現標籤沒有提示的問題,比如博主公司就是在內網開發,不能訪問網際網路.這裡以beans模組的schdma為例子 xmlns xmlns xsi xsi schemalocation spring beans.xsd id user class cn.com.yves...

spring 配置檔案Bean標籤

id屬性 起名稱,id屬性值名稱任意命名 id屬性值,不能包含特殊符號 根據id值得到配置物件 class屬性 建立物件所在類的全路徑 name屬性 功能和id屬性一樣的,id屬性值不能包含特殊符號,但是在name屬性值裡面可以包含特殊符號 scope屬性 singleton 預設值,單例的 乙個物...

spring配置檔案標籤的作用

一 string mvc.xml配置標籤解釋 1.context component scan 配置這個標籤,spring就會去自動掃瞄對應路徑或該路徑的子包下面的檔案,如果掃瞄到檔案中帶有 service,component,repository,controller等這些註解的類,則把這些類註冊...