天天看點

(II)第七節:bean 的作用域

  在 spring 中,可以在 <bean> 元素的 scope 屬性裡設定 bean 的作用域,以決定這個 bean 是單執行個體的還是多執行個體的。

  預設情況下,spring 隻為每個在 ioc 容器裡聲明的 bean 建立唯一一個執行個體(spring 中預設是單例的 bean),整個 ioc 容器範圍内都能共享該執行個體;

  所有後續的 getbean() 調用和  bean 引用都将傳回這個唯一的 bean 執行個體,該作用域被稱為 singleton,它是所有 bean 的預設作用域。

  scope 用于設定 bean 的作用域,其取值有 singleton | prototype | request | session

singleton:單例,唯一執行個體,預設的 prototype:原型,多例的(java中預設情況) request:在web環境下,同義詞請求建立一個bean執行個體,在一次請求中建立一個 bean  session:在web環境下,同義詞請求建立一個bean執行個體,在一次會話中建立一個 bean
(II)第七節:bean 的作用域

singleton:單執行個體的,預設的

  (1)在容器啟動完成之前就已經建立好對象,儲存在容器中了;

  (2)任何擷取都是擷取之前建立好的那個對象;

prototype:多執行個體的

  (1)容器啟動預設不會去建立多執行個體 bean;

  (2)擷取的時候建立多執行個體 bean;

  (3)每次擷取都會建立一個新的對象;

注意:

    當 bean 的作用域為單例時,spring 會在 ioc 容器初始化時就建立 bean 的對象執行個體;

    而當 bean 的作用域為 prototype 時,ioc 容器會在擷取 bean 的執行個體時建立 bean 的執行個體對象(即在使用 bean 時,才進行建立執行個體對象)

  配置bean 的作用域:

  測試代碼:

上一篇: 第七次作業
下一篇: 第七次作業