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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring Bean的生命周期及接口回调

發(fā)布時間:2025/3/15 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Bean的生命周期及接口回调 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇介紹Spring框架為Spring Bean生命周期各階段提供的回調接口,程序通過實現(xiàn)回調接口,可以在IOC容器實例化或銷毀Bean的過程中,得到Bean的控制權,并對Bean進行預處理工作。通過本篇的學習,可以達成如下目標。

● 了解Spring Bean的生命周期

● 掌握和運用Spring Bean生命周期各階段提供的接口

● 能夠對Spring Bean做預處理工作

Spring Bean雖然由IOC容器管理,不需要程序過多干預。但在一些情況下,程序可能需要在容器之外,對Bean進行一些處理工作。如IOC容器實例化Bean時,程序對Bean進行一些初始化工作,或者IOC容器銷毀Bean時,程序對Bean做一些數(shù)據(jù)的保存或清除工作。

Spring Bean從創(chuàng)建、運行到銷毀經歷了若干階段,在Bean生命周期的每個階段,程序都可以通過初始化回調、在配置文件中聲明方法、前置或后置處理等技術獲取Bean的控制權,對Bean進行處理工作。Bean生命周期的各個階段如下圖所示。

回調Aware接口

當Spring IOC容器內的Bean對象實例化完成并且相關屬性以及依賴設置完成后,IOC容器會檢查當前Bean對象是否實現(xiàn)Aware接口,如果實現(xiàn)了Aware接口,則調用Bean已經實現(xiàn)的Aware接口。Bean通過實現(xiàn)這些接口,可以增強Bean的功能,但是也增加了對Spring容器的依賴。

表 1 可以實現(xiàn)的Aware接口列表

?

例1:實現(xiàn)BeanNameAware接口

修改課程案例Teacher類,實現(xiàn)BeanNameAware接口。

setBeanName為實現(xiàn)的接口,接口簡單輸出bean的名稱。運行結果如下圖所示。

從輸出結果可以看出,Teacher類實現(xiàn)了BeanNameAware接口后,IOC容器將回調Bean實現(xiàn)的BeanNameAware接口的setBeanName方法。

前置處理和后置處理器BeanPostProcessor

前置處理是指程序在Spring IOC容器初始化Bean之前、屬性設置之后對該Bean先做一些預處理工作。Spring提供了BeanPostProcessors接口,Bean通過實現(xiàn)該接口的postProcessBeforeInitialization和postProcessAfterInitialization方法,可以在Bean初始化之前或初始化之后做前置處理和后置處理操作。

例2:實現(xiàn)BeanPostProcessor的前置和后置接口

修改課程案例Teacher類,實現(xiàn)postProcessBeforeInitialization前置接口和postProcessAfterInitialization后置接口。

?

建立beanpost.xml配置文件

建立BeanPostTest類文件。

?

執(zhí)行BeanPostTest類文件,輸出結果如下圖所示。

回調InitializingBean接口

InitializingBean接口為Bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是繼承該接口的類,在初始化Bean的時候會執(zhí)行該方法。

例3:實現(xiàn)InitializingBean接口

修改課程案例Teacher類,實現(xiàn)InitializingBean接口的afterPropertiesSet方法。

配置init-method方法

在Spring配置文件中,可以使用 init-method 屬性來指定帶有 void 無參數(shù)方法的名稱,該方法在Bean實例完成創(chuàng)建后調用。

例4:實現(xiàn)init-method方法

修改beanpost.xml配置文件,在配置文件中添加init-method屬性。

修改Teacher類,添加init方法。

執(zhí)行BeanPostTest文件,輸出結果如下圖所示。

從上圖可以看出,實現(xiàn)InitializingBean接口的afterPropertiesSet方法首先被調用,然后init方法被調用。

回調DisposableBean接口

DisposableBean接口為釋放Bean提供了釋放資源的方法,它只包括destory方法,凡是繼承該接口的類,在釋放Bean的時候會執(zhí)行該方法。

例5:實現(xiàn)DisposableBean接口

修改課程案例Teacher類,實現(xiàn)DisposableBean接口的destroy方法。

?

配置destroy-method方法

在Spring配置文件中,可以使用 destroy-method 屬性來指定帶有 void 無參數(shù)方法的名稱,該方法在Bean實例銷毀后調用。

例5:實現(xiàn)destroy-method方法

修改beanpost.xml配置文件,在配置文件中添加destroy-method屬性。

修改Teacher類,添加destroy_mehtod方法。

?

課程小結

IOC容器創(chuàng)建Bean并設置Bean屬性后,將執(zhí)行以下操作:(1)檢查Aware接口,如果Bean實現(xiàn)了Aware接口,則執(zhí)行回調;(2)檢查和回調BeanPostProcessor的前置處理接口;(3)執(zhí)行Bean的初始化工作,并調用InitializingBean接口,如果在配置文件中Bean定義了init-method屬性,則同時調用init-method屬性指定的方法;(4)Bean初始化完成后,IOC容器會調用BeanPostProcessor的后置處理接口;(5)Bean進入運行階段;(6)Bean被銷毀時調用DisposableBean接口,如果在配置文件中Bean定義了destroy_mehtod屬性,則同時調用destroy_mehtod屬性指定的方法。

總結

以上是生活随笔為你收集整理的Spring Bean的生命周期及接口回调的全部內容,希望文章能夠幫你解決所遇到的問題。

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