Spring中的bean生命周期是一個重要的點,只有理解Bean的生命周期,在開發中會對你理解代碼是非常有用的。對於Bean的周期,個人認為可以分為四個階段。第一階段:Bean的實例化,在該階段主要是Bean的實例化。第二階段是Bean的初始化,包括初始化方法和屬性的填充。第三階段是Bean的使用。第四階段是Bean的銷毀,該階段是調用destroy方法等。如圖(摘自網路)所示:
Spring首先會調用BeanFactoryPostProcessor的postProcessBeanFactory方法,后初始化Bean(是通過反射機制調用其構造方法),有了對象后,開始屬性的注入,注入屬性之后,如果你這個Bean實現了Spring中相關的XXXaware接口,比如說:BeanNameAware,BeanFactoryAware,ApplicationContextAware來獲取相關的對象,這一階段是在Bean的實例化中操作的。
接下來,進入Bean的初始化階段,首先會調用BeanPostProcess的前置處理(預初始化方法),后在調用初始化方法即InitlalizingBean的afterPropertiesSet方法,完成之后,調用自定義的init-method指定方法,最后調用BeanPostProcess的后置處理(與初始化后的方法)。
Bean的使用:其實是業務邏輯操作Bean的過程。
最后是Bean的銷毀:該階段銷毀有兩次銷毀。一次是DisposableBean的Destroy的方法,后才調用destroy-method指定的方法。
對於以上簡單介紹Bean整個生命周期,這里描述不像別人的描述的很多很雜,希望讀者通過這個簡單的描述對spring的Bean的生命周期有一個大概的思路,至於每個階段每個步驟是怎么完成的,其實是一件很復雜很繁瑣的過程。這里不再敘述。