Spring Bean作用域例項

2021-09-22 12:17:13 字數 1510 閱讀 6027

在spring中,bean作用域用於確定哪種型別的 bean 例項應該從spring容器中返回給呼叫者。bean支援的5種範圍域:

單例 - 每個spring ioc 容器返回乙個bean例項

原型- 當每次請求時返回乙個新的bean例項

請求 - 返回每個http請求的乙個bean例項

會話 - 返回每個http會話的乙個bean例項

全域性會話- 返回全域性http會話的乙個bean例項

在大多數情況下,可能只處理了 spring 的核心作用域 - 單例和原型,預設作用域是單例。

單例vs原型

這裡有乙個例子來說明,bean的作用域單例和原型之間的不同:

package com.yiibai.customer.services;

public class customerservice

public void setmessage(string message)

}

1.單例例子

如果 bean 配置檔案中沒有指定 bean 的範圍,預設為單例。

執行結果:

package com.yiibai.common;

import com.yiibai.customer.services.customerservice;

}

輸出結果

message : message by custa

message : message by custa

由於 bean 的 「customerservice' 是單例作用域,第二個通過提取」custb「將顯示訊息由 」custa' 設定,即使它是由乙個新的 getbean()方法來提取。在單例中,每個spring ioc容器只有乙個例項,無論多少次呼叫 getbean()方法獲取它,它總是返回同乙個例項。

2.原型例子

如果想有乙個新的 「customerservice」bean 例項,每次呼叫它的時候,需要使用原型(prototype)來代替。

執行-執行

message : message by custa

message : null

在原型作用域,必須為每個 getbean()方法中呼叫返回乙個新的例項。

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...