Spring Bean的作用域Scope

2021-10-12 12:31:00 字數 2706 閱讀 1662

spring中的物件scope屬性表示是物件可以生存的範圍,有以下幾種取值:

單例作用域,也是spring的預設scope值。在整個ioc容器的生命週期中,最多隻會建立出乙個物件例項,任何需要該物件的地方,都是引用的這乙個例項。

這在設計模式中,就是典型的「單例模式」。

"accountservice"

class

="com.something.defaultaccountservice"

/>

"accountservice"

class

="com.something.defaultaccountservice"

scope

="singleton"

/>

原型作用域,它的意思是每次需要該物件的時候,ioc容器都會建立乙個新的物件例項,不會復用以前建立的物件。

這在設計模式中,就是典型的「原型模式」。

"accountservice"

class

="com.something.defaultaccountservice"

scope

="prototype"

/>

請求作用域,這種作用域只存在於spring web應用中,是專門針對http請求設計的,為每個http請求建立新的物件例項,並且該例項只在當次請求範圍內有效。

"loginaction"

class

="com.something.loginaction"

scope

="request"

/>

會話作用域,這還是只存在於spring web應用中的作用域,是針對cookies-session機制設計的,物件的生命週期限定在session範圍內。

"userpreferences"

class

="com.something.userpreferences"

scope

="session"

/>

應用作用域,這也是針對spring web應用的,針對的是servlet應用上下文,也就是servletcontext物件例項,這種作用域就是繫結到這個例項上的。

class

= scope

=/>

這種作用域也是針對spring web應用的,只不過這裡針對的通訊協議是websocket協議,不是http協議,這兩種協議的區別就不展開了。採用這種作用域的物件,生命週期限定在websocket範圍內,其實它和request作用域挺像的,都是站在通訊協議的角度看spring物件生命週期的。

spring內部其實還提供有一種單執行緒作用域,但是這種作用域預設是沒有註冊到spring容器中的,spring只是提供了這種作用域的實現類。

如果想要使用,需要手動註冊這種作用域:

<?xml version="1.0" encoding="utf-8"?>

xmlns

=""xmlns:xsi

=""xmlns:aop

=""xsi:schemalocation=""

>

class

="org.springframework.beans.factory.config.customscopeconfigurer"

>

name

="scopes"

>

>

key=

"thread"

>

class

="org.springframework.context.support.******threadscope"

/>

entry

>

map>

property

>

bean

>

"thing2"

class

="x.y.thing2"

scope

="thread"

>

name

="name"

value

="rick"

/>

<

aop:scoped-proxy

/>

bean

>

"thing1"

class

="x.y.thing1"

>

name

="thing2"

ref="thing2"

/>

bean

>

beans

>

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