面試Spring之bean的生命週期
找工作的時候有些人會被問道Spring中Bean的生命週期,其實也就是考察一下對Spring是否熟悉,工作中很少用到其中的內容,那我們簡單看一下。
在說明前可以思考一下Servlet的生命週期:例項化,初始init,接收請求service,銷燬destroy;
Spring上下文中的Bean也類似,如下
1、例項化一個Bean--也就是我們常說的new;
2、按照Spring上下文對例項化的Bean進行配置--也就是IOC注入;
3、如果這個Bean已經實現了BeanNameAware介面,會呼叫它實現的setBeanName(String)方法,此處傳遞的就是Spring配置檔案中Bean的id值
4、如果這個Bean已經實現了BeanFactoryAware介面,會呼叫它實現的setBeanFactory(setBeanFactory(BeanFactory)傳遞的是Spring工廠自身(可以用這個方式來獲取其它Bean,只需在Spring配置檔案中配置一個普通的Bean就可以);
5、如果這個Bean已經實現了ApplicationContextAware介面,會呼叫setApplicationContext(ApplicationContext)方法,傳入Spring上下文(同樣這個方式也可以實現步驟4的內容,但比4更好,因為ApplicationContext是BeanFactory的子介面,有更多的實現方法);
6、如果這個Bean關聯了BeanPostProcessor介面,將會呼叫postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor經常被用作是Bean內容的更改,並且由於這個是在Bean初始化結束時呼叫那個的方法,也可以被應用於記憶體或快取技術;
7、如果Bean在Spring配置檔案中配置了init-method屬性會自動呼叫其配置的初始化方法。
8、如果這個Bean關聯了BeanPostProcessor介面,將會呼叫postProcessAfterInitialization(Object obj, String s)方法、;
注:以上工作完成以後就可以應用這個Bean了,那這個Bean是一個Singleton的,所以一般情況下我們呼叫同一個id的Bean會是在內容地址相同的例項,當然在Spring配置檔案中也可以配置非Singleton,這裡我們不做贅述。
9、當Bean不再需要時,會經過清理階段,如果Bean實現了DisposableBean這個介面,會呼叫那個其實現的destroy()方法;
10、最後,如果這個Bean的Spring配置中配置了destroy-method屬性,會自動呼叫其配置的銷燬方法。
以上10步驟可以作為面試或者筆試的模板,另外我們這裡描述的是應用Spring上下文Bean的生命週期,如果應用Spring的工廠也就是BeanFactory的話去掉第5步就Ok了。
推薦看我常用Spring註解的文章哦:Spring註解開發之Spring常用註解
相關文章
- Spring之Bean的生命週期SpringBean
- JAVA面試題:Spring中bean的生命週期Java面試題SpringBean
- Spring Bean的生命週期SpringBean
- Spring Bean 的生命週期SpringBean
- Spring Bean的生命週期SpringBean
- Spring Bean生命週期SpringBean
- Spring Bean 生命週期SpringBean
- Spring短生命週期bean注入長生命週期bean問題SpringBean
- 【spring原始碼系列】之【Bean的生命週期】Spring原始碼Bean
- Spring核心系列之Bean的生命週期SpringBean
- Spring中bean的生命週期SpringBean
- Spring教程-Spring Bean的生命週期SpringBean
- 淺析spring——IOC 之 分析 Bean 的生命週期SpringBean
- 【Spring】Bean的LifeCycle(生命週期)SpringBean
- bean的生命週期Bean
- spring bean的作用域和生命週期SpringBean
- Spring原始碼:bean的生命週期(一)Spring原始碼Bean
- Spring原始碼:Bean的生命週期(二)Spring原始碼Bean
- 聊一聊Spring Bean 的生命週期SpringBean
- Spring原始碼:Bean生命週期(三)Spring原始碼Bean
- Spring原始碼:Bean生命週期(四)Spring原始碼Bean
- Spring原始碼:Bean生命週期(五)Spring原始碼Bean
- IOC - bean 生命週期Bean
- Spring中與bean有關的生命週期SpringBean
- 大廠高頻面試題Spring Bean生命週期最詳解面試題SpringBean
- Spring Bean各階段生命週期的介紹SpringBean
- Spring Bean生命週期,好像人的一生。。SpringBean
- Spring(十二):IOC容器中Bean的生命週期方法SpringBean
- 探索Spring系列(一)Spring容器和Bean的生命週期SpringBean
- spring管理bean的生命週期與spring通過工廠方法配置beanSpringBean
- 詳解Spring中Bean的作用域與生命週期SpringBean
- 5~10年高階Java程式設計師面試題:Spring Bean 的生命週期Java程式設計師面試題SpringBean
- spring通過註解註冊bean的方式+spring生命週期SpringBean
- Spring容器啟動流程+Bean的生命週期【附原始碼】SpringBean原始碼
- spring生命週期Spring
- Spring Bean 生命週期之“我從哪裡來?” 懂得這個很重要SpringBean
- Spring生命週期管理之總結Spring
- spring迴圈依賴解決過程&Bean的生命週期SpringBean