spring bean 生命週期

2021-10-12 12:49:41 字數 3687 閱讀 1895

@component

public

class

carpublic

void

init()

public

void

detory()

}

/**

* bean的生命週期:

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

* 容器管理bean的生命週期;

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

* * 構造(物件建立)

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

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

* 初始化:

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

* 銷毀:

* 單例項:容器關閉的時候

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

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

* 通過@bean指定init-method和destroy-method;

*/@componentscan

("com.atguigu.bean"

)@configuration

public

class

mainconfigoflifecycle

}

測試類

public

class

ioctest_lifecycle

}

@component

public

class

catimplements

initializingbean

,disposablebean

@override

public

void

destroy()

throws exception

@override

public

void

afterpropertiesset()

throws exception

}

/**

* 2)、通過讓bean實現initializingbean(定義初始化邏輯),

* disposablebean(定義銷毀邏輯);

*/@componentscan

("com.atguigu.bean"

)//採用包掃瞄方式

@configuration

public

class

mainconfigoflifecycle

測試類

public

class

ioctest_lifecycle

}

@component

public

class

dog//物件建立並賦值之後呼叫

@postconstruct

public

void

init()

//容器移除物件之前

@predestroy

public

void

detory()

}

/**

* 3)、可以使用jsr250;

* @postconstruct:在bean建立完成並且屬性賦值完成;來執行初始化方法

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

*/@componentscan

("com.atguigu.bean"

)@configuration

public

class

mainconfigoflifecycle

測試類

public

class

ioctest_lifecycle

}

/**

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

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

*/@component

public

class

mybeanpostprocessor

implements

beanpostprocessor

@override

public object postprocessafterinitialization

(object bean, string beanname)

throws bean***ception

}

/**

* beanpostprocessor.postprocessbeforeinitialization

* 初始化:

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

* beanpostprocessor.postprocessafterinitialization

* 4)、beanpostprocessor【inte***ce】:bean的後置處理器;

* 在bean初始化前後進行一些處理工作;

* postprocessbeforeinitialization:在初始化之前工作

* postprocessafterinitialization:在初始化之後工作

*/@componentscan

("com.atguigu.bean"

)@configuration

public

class

mainconfigoflifecycle

}

beanpostprocessor原理

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

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

beanpostprocessor原理

populatebean

;給bean進行屬性賦值

initializebean

beanpostprocessor在spring底層的使用

@component

public

class

dogimplements

//物件建立並賦值之後呼叫

@postconstruct

public

void

init()

//容器移除物件之前

@predestroy

public

void

detory()

@override

public

void

throws bean***ception

}

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