作者: 一字馬胡
轉(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í)筆記吧悼嫉。所謂生命周期,就是從出生到死亡的過(guò)程拼窥,我想要知道的是在Spring容器中戏蔑,一個(gè)bean是怎么從出生走向死亡的,這里面的過(guò)程非常豐富鲁纠,也就意味著我們可以更加靈活的使用Spring容器來(lái)為我們工作总棵。所以這也說(shuō)明學(xué)習(xí)和掌握Spring Bean的生命周期是異常重要的。
下面的圖片形象的展示了Spring Bean生命周期中需要走的一些路徑:
Spring Bean 生命周期詳解
上面的流程圖已經(jīng)展示了Spring bean生命周期的詳細(xì)細(xì)節(jié)改含,我們知道了這些加載情龄、初始化、設(shè)置等一系列流程之后捍壤,就可以在合適的環(huán)節(jié)加上我們想要的動(dòng)作骤视,比如,我們可以使用BeanFactoryPostProcessor的postProcessBeanFactory方法來(lái)修改bean的屬性鹃觉,例如专酗,我們有一個(gè)bean的一個(gè)屬性A在spring配置文件中找不到,但是我們可以在BeanFactoryPostProcessor的postProcessBeanFactory方法里面使用方法的參數(shù)beanFactory來(lái)注冊(cè)一個(gè)A帜慢。我們還可以使用BeanPostProcessor來(lái)修改我們的bean的屬性值笼裳,比如一個(gè)bean的一個(gè)屬性A,我們可以在BeanPostProcessor的postProcessBeforeInitialization方法和postProcessAfterInitialization方法來(lái)修改其值粱玲,這些方法需要配合其他的與Spring bean生命周期相關(guān)的類來(lái)做躬柬。
可以將Spring bean的生命周期根據(jù)不同特點(diǎn)劃分為下面的幾類:
- Bean自身的方法
包括我們?cè)谂渲胋ean時(shí)候設(shè)置的init-method方法和destroy-method方法。
- Spring Bean級(jí)別的生命周期方法
包括BeanNameAware抽减、BeanFactoryAware允青、InitializingBean和DiposableBean這些接口的方法。
- Spring容器級(jí)別生命周期方法
包括InstantiationAwareBeanPostProcessor卵沉、BeanPostProcessor颠锉、BeanFactoryPostProcessor的實(shí)現(xiàn)類的方法