日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring ----Bean的生命周期

發布時間:2025/7/14 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring ----Bean的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這Spring框架中,一旦把一個bean納入到Spring IoC容器之中,這個bean的生命周期就會交由容器進行管理, 一般擔當管理者角色的是BeanFactory或ApplicationContext。認識一下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的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。