作者: 一字馬胡
轉(zhuǎn)載標(biāo)志 【2017-11-03】
更新日志
| 日期 | 更新內(nèi)容 | 備注 |
|---|---|---|
| 2017-11-03 | 添加轉(zhuǎn)載標(biāo)志 | 持續(xù)更新 |
Spring Bean 生命周期概述
關(guān)于Spring生命周期的資料非常多,內(nèi)容大同小異,本文就當(dāng)做是學(xué)習(xí)筆記吧。所謂生命周期,就是從出生到死亡的過程,我想要知道的是在Spring容器中,一個bean是怎么從出生走向死亡的,這里面的過程非常豐富,也就意味著我們可以更加靈活的使用Spring容器來為我們工作。所以這也說明學(xué)習(xí)和掌握Spring Bean的生命周期是異常重要的。
下面的圖片形象的展示了Spring Bean生命周期中需要走的一些路徑:

Spring Bean 生命周期詳解
上面的流程圖已經(jīng)展示了Spring bean生命周期的詳細(xì)細(xì)節(jié),我們知道了這些加載、初始化、設(shè)置等一系列流程之后,就可以在合適的環(huán)節(jié)加上我們想要的動作,比如,我們可以使用BeanFactoryPostProcessor的postProcessBeanFactory方法來修改bean的屬性,例如,我們有一個bean的一個屬性A在spring配置文件中找不到,但是我們可以在BeanFactoryPostProcessor的postProcessBeanFactory方法里面使用方法的參數(shù)beanFactory來注冊一個A。我們還可以使用BeanPostProcessor來修改我們的bean的屬性值,比如一個bean的一個屬性A,我們可以在BeanPostProcessor的postProcessBeforeInitialization方法和postProcessAfterInitialization方法來修改其值,這些方法需要配合其他的與Spring bean生命周期相關(guān)的類來做。
可以將Spring bean的生命周期根據(jù)不同特點劃分為下面的幾類:
- Bean自身的方法
包括我們在配置bean時候設(shè)置的init-method方法和destroy-method方法。
- Spring Bean級別的生命周期方法
包括BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean這些接口的方法。
- Spring容器級別生命周期方法
包括InstantiationAwareBeanPostProcessor、BeanPostProcessor、BeanFactoryPostProcessor的實現(xiàn)類的方法