javascript
Spring ----Bean的生命周期
一、生命周期流程圖:
Spring Bean的完整生命周期從創建Spring容器開始,直到最終Spring容器銷毀Bean,這其中包含了一系列關鍵點。
Spring框架中,一旦把一個bean納入到Spring IoC容器之中,這個bean的生命周期就會交由容器進行管理,一般擔當管理者角色的是BeanFactory或ApplicationContext。認識一下Bean的生命周期活動,對更好的利用它有很大的幫助。
????下面以BeanFactory為例,說明一個Bean的生命周期活動:
Bean的建立
??????由BeanFactory讀取Bean定義文件,并生成各個實例。
Setter注入
??????執行Bean的屬性依賴注入。
BeanNameAware的setBeanName()
??????如果Bean類實現了org.springframework.beans.factory.BeanNameAware接口,則執行其setBeanName()方法。
BeanFactoryAware的setBeanFactory()
??????如果Bean類實現了org.springframework.beans.factory.BeanFactoryAware接口,則執行其setBeanFactory()方法。
BeanPostProcessors的processBeforeInitialization()
??????容器中如果有實現org.springframework.beans.factory.BeanPostProcessors接口的實例,則任何Bean在初始化之前都會執行這個實例的processBeforeInitialization()方法。
InitializingBean的afterPropertiesSet()
??????如果Bean類實現了org.springframework.beans.factory.InitializingBean接口,則執行其afterPropertiesSet()方法。
Bean定義文件中定義init-method
??????在Bean定義文件中使用“init-method”屬性設定方法名稱,如下:
?
<bean id="demoBean" class="com.yangsq.bean.DemoBean" init-method="initMethod">
??.......
?</bean>
? ?
?
??????這時會執行initMethod()方法,注意,這個方法是不帶參數的。
BeanPostProcessors的processAfterInitialization()
??????容器中如果有實現org.springframework.beans.factory.BeanPostProcessors接口的實例,則任何Bean在初始化之前都會執行這個實例的processAfterInitialization()方法。
DisposableBean的destroy()
??????在容器關閉時,如果Bean類實現了org.springframework.beans.factory.DisposableBean接口,則執行它的destroy()方法。
Bean定義文件中定義destroy-method
??????在容器關閉時,可以在Bean定義文件中使用“destory-method”定義的方法
?
<bean id="demoBean" class="com.yangsq.bean.DemoBean" destory-method="destroyMethod">
??.......
</bean>
? ?
?
???????這時會執行destroyMethod()方法,注意,這個方法是不帶參數的。
???以上就是BeanFactory維護的一個Bean的生命周期。下面這個圖可能更直觀一些:
?
如果使用ApplicationContext來維護一個Bean的生命周期,則基本上與上邊的流程相同,只不過在執行BeanNameAware的setBeanName()后,若有Bean類實現了org.springframework.context.ApplicationContextAware接口,則執行其setApplicationContext()方法,然后再進行BeanPostProcessors的processBeforeInitialization()
???實際上,ApplicationContext除了向BeanFactory那樣維護容器外,還提供了更加豐富的框架功能,如Bean的消息,事件處理機制等。
?
?
?
?
轉載于:https://www.cnblogs.com/Smile-123/p/5993348.html
總結
以上是生活随笔為你收集整理的Spring ----Bean的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32中IO口的8中工作模式
- 下一篇: 关于selinux排错