Spring中Bean的作用域

2021-05-11 15:20:55 字數 1085 閱讀 6376

bean作用域

作用域描述

singleton

在每個spring ioc容器中乙個bean定義對應乙個物件例項。整個容器中只有該bean的唯一例項

prototype

乙個bean定義對應多個物件例項。

request

session

global session

,因為這樣在配置中的任何錯誤就會即刻被發現(否則的話可能要花幾個小時甚至幾天)。

有時候這種預設處理可能並不是

在xml配置檔案中,延遲初始化將通過元素中的lazy-init屬性來進行控制。例如:

lazy-init="true"/>

在容器層次上通過在元素上使用'default-lazy-init'屬性來控制延遲初始化也是可能的。如下面的配置:

prototype 則是容器啟動時 例項化物件

prototype作用域的bean會導致在每次對該bean請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法)時都會建立乙個新的bean例項

。根據經驗,對有狀態的bean應該使用prototype作用域,而對無狀態的bean則應該使用singleton作用域。

對於prototype作用域的bean,有一點非常重要,那就是spring不能對乙個prototype bean的整個生命週期負責:容器在初始化、配置、裝飾或者是裝配完乙個prototype例項後,將它交給客戶端,隨後就對該prototype例項不聞不問了。不管何種作用域,容器都會呼叫所有物件的初始化生命週期**方法。但對prototype而言,任何配置好的析構生命週期**方法都將不會

被呼叫。清除prototype作用域的物件並釋放任何prototype bean所持有的昂貴資源,都是客戶端**的職責。(讓spring容器釋放被prototype作用域bean占用資源的一種可行方式是,通過使用bean的後置處理器,該處理器持有要被清除的bean的引用。)

spring中bean的作用域

如何使用spring的作用域 這裡的scope就是用來配置spring bean的作用域,它標識bean的作用域。在spring2.0之前bean只有2種作用域即 singleton 單例 non singleton 也稱prototype spring2.0以後,增加了session reques...

Spring中bean的作用域

1 singleton作用域 當乙個bean的作用域設定為singleton,spring ioc容器只會建立該bean定義的唯一例項。2 prototype prototype作用域部署的bean,每一次請求都會產生乙個新的bean例項,相當與乙個new的操作。3 request request表...

Spring中bean的作用域

本文以spring4.1.6 為例 初期的spring中bean有兩種 單例 singleton 和 原型 prototype spring 預設bean的scope 是 singleton,對於有狀態的bean 不能重複使用需要設定scope 為prototype 即每次組裝時生成乙個全新的bea...