spring bean 生命週期

2021-09-13 12:50:42 字數 2211 閱讀 8966

bean建立—初始化----銷毀的過程

我們可以自定義初始化和銷毀方法;容器在bean進行到當前生命週期的時候來呼叫我們自定義的初始化和銷毀方法

構造(物件建立)

單例項:在容器啟動的時候建立物件

多例項:在每次獲取的時候建立物件

大概流程

呼叫beanpostprocessor.postprocessbeforeinitialization

初始化:

物件建立完成,並賦值好,呼叫初始化方法。。。

beanpostprocessor.postprocessafterinitialization

銷毀:

單例項:容器關閉的時候

多例項:容器不會管理這個bean;容器不會呼叫銷毀方法;

遍歷得到容器中所有的beanpostprocessor;挨個執行beforeinitialization,

一但返回null,跳出for迴圈,不會執行後面的beanpostprocessor.postprocessorsbeforeinitialization

beanpostprocessor原理(偽**,體現實現方式)

initializebean(beanname, exposedobject, mbd);

初始化工作

實現方式

1)指定初始化和銷毀方法;

// 通過@bean指定 init-method、destroy-method;

@componentscan("com.atguigu.bean")

@configuration

public class mainconfigoflifecycle

}

2)通過讓bean實現initializingbean(定義初始化邏輯),
通過dto實現介面 disposablebean. 的 void destroy() throws exception 方法實現銷毀邏輯,實現方式如下
3)可以使用jsr250;
@postconstruct:在bean建立完成並且屬性賦值完成;來執行初始化方法

@predestroy:在容器銷毀bean之前通知我們進行清理工作

4)beanpostprocessor【inte***ce】:bean的後置處理器;
在bean初始化前後進行一些處理工作;

postprocessbeforeinitialization:在初始化之前工作

postprocessafterinitialization:在初始化之後工作

spring底層對 beanpostprocessor 的使用;

bean賦值,注入其他元件,@postconstruct, @predestroy, @autowired, 生命週期註解功能,@async,*** beanpostprocessor;

demo實現**

@component

public car()

public void init()

public void detory()

@postconstruct

public void postconstruct()

@predestroy

public void predestroy()

@override

}@override

public void destroy() throws exception

@override

public void afterpropertiesset() throws exception

}

/**

* 後置處理器:初始化前後進行處理工作

* 將後置處理器加入到容器中

*/@component

public class mybeanpostprocessor implements beanpostprocessor

@override

public object postprocessafterinitialization(object bean, string beanname) throws bean***ception

}

測試**

@test

public void test01()

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