Spring Bean的配置項 作用域與生命週期

2021-07-26 12:16:31 字數 2043 閱讀 3635

id:唯一標識

class:具體是哪乙個類(理論上是必須的)

scope:範圍

constructor arguments:構造器的引數

properties:屬性

autowiring mode:自動裝配模式

lazy-initialization mode:懶載入模式

initialization/destruction method:初始化/銷毀的方法

1、作用域(scope值)

singletion:單例 指乙個bean容器只存在乙份(預設模式)

prototype:每次請求會建立新的例項,destory方式不生效

request:對於request建立新的例項,只在當前request內有效

session:對於session建立新的例項,只在當前session內有效

global session:基於portlet(例如單點登入的範圍)的web中有效,如果在web中同session

例:

id="beanscope"

class="com.imooc.bean.beanscope"

scope="singleton">

bean>

@test

public

void

testsay()

配置了scope=」singleton」後,無論在這裡獲取了多少個bean的id,實際上都是在同乙個spring ioc容器中得到的乙個唯一的例項(因為一直是在同一方法中獲取bean),也就是無論獲取多少個,其實一直在使用同乙個物件。即兩次執行say()方法輸出物件的hashcode是相同的

id="beanscope"

class="com.imooc.bean.beanscope"

scope="prototype">

bean>

@test

public

void

testsay()

如果這裡配置了scope=」prototype」,那麼兩次執行,得到就結果就不一樣了,也就是說,不是單例,每次請求(使用物件)都會建立乙個新的例項

2、生命週期

定義 初始化(initialization method)

使用 銷毀(destruction method)

① 初始化:

方法1:實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作

方法2:.配置init-method

例如設定bean中init-method=」init」那麼在初始化過程中就會呼叫相應class指定類的init()方法進行初始化工作

② 銷毀(與初始化類似)

方法1:實現org.springframework.beans.foctory.disposablebean介面,覆蓋destory方法。

方法2:配置destroy-method

③ 配置全域性初始化、銷毀方法(預設配置)

default-init-method="defaulinit" default-destroy-method="defaultdestory" >    

beans>

注意:

當乙個bean配置了init-method 和destroy-method的時候,全域性配置default-init-method和default-destroy-method會被覆蓋掉。並且,實現初始化和銷毀的介面的會比在xml中配置bean的方式更先執行。

spring bean的配置(一)

案例一 xmlns xmlns xsi xsi schemalocation spring beans.xsd id class bean id class bean beans id屬性 定義單個bean元件的命名。class屬性 定義了bean使用的類,要使用類的全稱來定義。fully qual...

經典Java面試題 Spring bean 作用域

面試原題 spring中定義bean的作用域時,使用singleton和prototype有何區別?正確答案 singleton作用域 當把乙個bean定義設定為singleton作用域時,spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求 將其注入到另乙個bean中...

Spring bean配置繼承

在 spring,繼承是用為支援bean設定乙個 bean 來分享共同的值,屬性或配置。乙個子 bean 或繼承的bean可以繼承其父 bean 的配置,屬性和一些屬性。另外,子 bean 允許覆蓋繼承的值。請參見下面的完整的例子來告訴你如何配置 bean 繼承在 spring 中工作。packag...