spring bean的生命週期

2021-09-08 17:37:09 字數 2231 閱讀 4338

一、初始化和銷毀

1、專案結構如下:

2、新建replyservice類

package

hjp.spring.beanlifecycle;

public

class

replyservice

public

void

myinit()

public

void

mydestroy()

}

3、新建beans.xml文件,init-method指定初始化時執行方法,destroy-method指定bean銷毀時執行方法

注意:銷毀方法要求:(1)、必須是單例的(2)、必須關閉容器

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xsi:schemalocation

=" /spring-beans.xsd"

>

<

bean

id="replyserviceid"

class

="hjp.spring.beanlifecycle.replyservice"

init-method

="myinit"

destroy-method

="mydestroy"

>

bean

>

beans

>

4、新建測試類

package

hjp.spring.beanlifecycle;

import

org.junit.test;

import

import

public

class

@test

public

void

demo1()

}

二、後處理bean

1、spring 後處理bean提供一種機制,可以對例項物件進行修改的機制

2、後處理bean使用

(1)、編寫實現類,實現介面beanpostprocessor

package

hjp.spring.beanlifecycle;

import

org.springframework.beans.bean***ception;

import

org.springframework.beans.factory.config.beanpostprocessor;

public

class mybeanpostprocessor implements

beanpostprocessor

@override

public object postprocessafterinitialization(object bean, string beanname) throws

bean***ception

}

(2)、將實現類配置到spring容器,spring容器在建立bean時,都是自動使用後處理bean

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xsi:schemalocation

=" /spring-beans.xsd"

>

<

bean

id="replyserviceid"

class

="hjp.spring.beanlifecycle.replyservice"

init-method

="myinit"

destroy-method

="mydestroy"

>

bean

>

<

bean

class

="hjp.spring.beanlifecycle.mybeanpostprocessor"

>

bean

>

beans

>

Spring Bean生命週期

1.容器尋找bean的定義資訊並且將其實例化。2.受用依賴注入,spring按照bean定義資訊配置bean的所有屬性。3.如果bean實現了beannameaware介面,工廠呼叫bean的setbeanname 方法傳遞bean的id。4.如果bean實現了beanfactoryaware介面,...

spring bean生命週期

生命週期 定義,初始化,使用,銷毀 一.初始化 方法1.實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作 方法2.配...

Springbean生命週期

springbean的完整生命週期大致如下 1 首先例項化 beanfactorypostprocessor的實現類,執行它的postprocessorbeanfactory方法 2 例項化beanpostprocessor 的實現類 3 例項化 instantiationawarebeanpost...