Bean生命周期的整個(gè)執(zhí)行過程描述如下:
1、根據(jù)配置情況調(diào)用Bean構(gòu)造方法或工廠方法實(shí)例化 Bean。
2、利用依賴注入完成Bean中所有屬性值的配置注入。
3、如果Bean 實(shí)現(xiàn)了BeanNameAware 接口,則 Spring調(diào)用Bean的setBeanName()方法傳入當(dāng)前Bean的id值。
4、如果Bean實(shí)現(xiàn)了BeanFactoryAware 接口,則 Spring 調(diào)用setBeanFactory()方法傳入當(dāng)前工廠實(shí)例的引用。
5、如果Bean 實(shí)現(xiàn)了ApplicationContextAware 接口,則 Spring調(diào)用setApplicationContext()方法傳入當(dāng)前ApplicationContext 實(shí)例的引用。
6、如果BeanPostProcessor 和Bean關(guān)聯(lián),則 Spring將調(diào)用該接口的預(yù)初始化方法postProcessBeforelnitialzation()對(duì) Bean進(jìn)行加工操作,此處非常重要,Spring的AOP就是利用它實(shí)現(xiàn)的。
7、如果Bean實(shí)現(xiàn)了InitializingBean接口,則 Spring將調(diào)用afterPropertiesSet()方法。
8、如果在配置文件中通過 init-method屬性指定了初始化方法,則調(diào)用該初始化方法。
9、如果BeanPostProcessor和 Bean關(guān)聯(lián),則 Spring將調(diào)用該接口的初始化方法、 postProcessAfterlntialization()。此時(shí),Bean已經(jīng)可以被應(yīng)用系統(tǒng)使用了。
10、如果在 中指定了該Bean的作用范圍為scope=“singleton”,則將該Bean放入Spring IOC的緩存池中,將觸發(fā)Spring對(duì)該Bean 的生命周期管理;如果在中指定了該Bean的作用范圍為scope=“prototype”,則將該Bean交給調(diào)用者,調(diào)用者管理該Bean的生命周期,Spring不再管理該 Bean。
11、如果Bean實(shí)現(xiàn)了DisposableBean接口,則 Spring 會(huì)調(diào)用destory()方法將Spring 中的 Bean銷毀; 如果在配置文件中通過destory-method屬性指定了Bean的銷毀方法,則 Spring將調(diào)用該方法。
?
初始化的流程:
文章來源:http://www.zghlxwxcb.cn/news/detail-421703.html
Spring Bean生命周期詳解_springbean生命周期詳解_Been Doing的博客-CSDN博客?文章來源地址http://www.zghlxwxcb.cn/news/detail-421703.html
到了這里,關(guān)于Spring Bean的生命周期的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!