如何管理Spring Bean的生命周期?回答這個(gè)問(wèn)題之前,我們可以先來(lái)看看Bean的定義,Bean是一個(gè)被實(shí)例化,組裝,并通過(guò)Spring IOC容器所管理的對(duì)象。換句話說(shuō),那些組成應(yīng)用程序的主體以及由Spring IOC容器所管理的對(duì)象就是bean。另外,在Spring中bean默認(rèn)都是單例的。想要管理Spring Bean的生命周期,大概要按照以下步驟去做:
步驟1:實(shí)例化一個(gè)Bean,也就是我們通常說(shuō)的new;
步驟2:按照Spring上下文對(duì)實(shí)例化的Bean進(jìn)行配置,也就是IOC注入;
步驟3:如果這個(gè)Bean實(shí)現(xiàn)了BeanNameAware接口,會(huì)調(diào)用它實(shí)現(xiàn)的setBeanName(StringbeanId)方法,此處傳遞的是Spring配置文件中Bean的ID;
步驟4:如果這個(gè)Bean實(shí)現(xiàn)了BeanFactoryAware接口,會(huì)調(diào)用它實(shí)現(xiàn)的setBeanFactory(),傳遞的是Spring工廠本身(可以用這個(gè)方法獲取到其他Bean);
步驟5:如果這個(gè)Bean實(shí)現(xiàn)了ApplicationContextAware接口,會(huì)調(diào)用;setApplicationContext(ApplicationContext)方法,傳入Spring上下文,該方式同樣可以實(shí)現(xiàn)步驟4,但比4更好,以為ApplicationContext是BeanFactory的子接口,有更多的實(shí)現(xiàn)方法;
步驟6:如果這個(gè)Bean關(guān)聯(lián)了BeanPostProcessor接口,將會(huì)調(diào)用postProcessBeforeInitialization(Objectobj,Strings)方法,BeanPostProcessor經(jīng)常被用作是Bean內(nèi)容的更改,并且由于這個(gè)是在Bean初始化結(jié)束時(shí)調(diào)用After方法,也可用于內(nèi)存或緩存技術(shù);
步驟7:如果這個(gè)Bean在Spring配置文件中配置了init-method屬性會(huì)自動(dòng)調(diào)用其配置的初始化方法;
步驟8.如果這個(gè)Bean關(guān)聯(lián)了BeanPostProcessor接口,將會(huì)調(diào)用postAfterInitialization方法。需要注意:以上工作完成以后就可以用這個(gè)Bean了,那這個(gè)Bean是一個(gè)single的,所以一般情況下我們調(diào)用同一個(gè)ID的Bean會(huì)是在內(nèi)容地址相同的實(shí)例;
步驟9:當(dāng)Bean不再需要時(shí),會(huì)經(jīng)過(guò)清理階段,如果Bean實(shí)現(xiàn)了DisposableBean接口,會(huì)調(diào)用其實(shí)現(xiàn)的destroy方法;
步驟10:最后,如果這個(gè)Bean的Spring配置中配置了destroy-method屬性,會(huì)自動(dòng)調(diào)用其配置的銷毀方法。
以上就是深圳達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Javase菜鳥教程,如何管理SpringBean的生命周期”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。