在spring中,bean作用域用於確定哪種型別的 bean 例項應該從spring容器中返回給呼叫者。bean支援的5種範圍域:
單例 - 每個spring ioc 容器返回乙個bean例項
原型- 當每次請求時返回乙個新的bean例項
請求 - 返回每個http請求的乙個bean例項
會話 - 返回每個http會話的乙個bean例項
全域性會話- 返回全域性http會話的乙個bean例項
在大多數情況下,可能只處理了 spring 的核心作用域 - 單例和原型,預設作用域是單例。
單例vs原型
這裡有乙個例子來說明,bean的作用域單例和原型之間的不同:
package com.yiibai.customer.services;1.單例例子public class customerservice
public void setmessage(string message)
}
如果 bean 配置檔案中沒有指定 bean 的範圍,預設為單例。
執行結果:package com.yiibai.common;輸出結果import com.yiibai.customer.services.customerservice;
}
message : message by custa由於 bean 的 「customerservice' 是單例作用域,第二個通過提取」custb「將顯示訊息由 」custa' 設定,即使它是由乙個新的 getbean()方法來提取。在單例中,每個spring ioc容器只有乙個例項,無論多少次呼叫 getbean()方法獲取它,它總是返回同乙個例項。message : message by custa
2.原型例子
如果想有乙個新的 「customerservice」bean 例項,每次呼叫它的時候,需要使用原型(prototype)來代替。
執行-執行message : message by custa在原型作用域,必須為每個 getbean()方法中呼叫返回乙個新的例項。message : null
3. bean作用域注釋
還可以使用注釋來定義 bean 的作用域。
package com.yiibai.customer.services;啟用自動元件掃瞄import org.springframework.context.annotation.scope;
import org.springframework.stereotype.service;
@service
@scope("prototype")
public class customerservice
public void setmessage(string message)
}
Spring Bean的作用域
bean的作用域,常用的有兩種,單例singleton 多例prototype 預設情況下,bean都是單例的singleton。在容器初始化的時候就被建立,就這麼乙份。1 單例模式 例如 測試 package com.lynn.spring.test import static org.junit...
Spring bean的作用域
spring框架中,bean 的作用域有如下五種 1.單例 每個spring的ioc容器返回來乙個bean例項 框架預設 2.原型 當每次請求時候都返回來乙個bean例項 3.請求 每個http請求返回來乙個bean例項 4.會話 每個http會話返回來乙個bean例項 5.全域性會話 返回全域性會...
Spring Bean的作用域
在xml檔案中配置bean時,我們可以通過scope為bean配置指定的作用域。bean的作用域分為五種 說明 singleton 單例模式,乙個bean容器中只存在乙個bean例項 prototype 原型模式,每次請求都會產生乙個新的bean例項 request 每次http請求會產生乙個新的b...