欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之SpringBean生命周期問題理解

 更新時間:2021年07月31日 09:03:18   作者:java構(gòu)架師  
這篇文章主要介紹了Java之SpringBean生命周期問題理解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

Spring Bean的生命周期?

首先說一下Servlet的生命周期:實例化,初始init,接收請求service,銷毀destroy;

Spring上下文中的Bean生命周期也類似,如下:

(1)實例化Bean:

對于BeanFactory容器,當(dāng)客戶向容器請求一個尚未初始化的bean時,或初始化bean的時候需要注入另一個尚未初始化的依賴時,容器就會調(diào)用createBean進(jìn)行實例化。對于ApplicationContext容器,當(dāng)容器啟動結(jié)束后,通過獲取BeanDefinition對象中的信息,實例化所有的bean。

(2)設(shè)置對象屬性(依賴注入):

實例化后的對象被封裝在BeanWrapper對象中,緊接著,Spring根據(jù)BeanDefinition中的信息 以及 通過BeanWrapper提供的設(shè)置屬性的接口完成依賴注入。

(3)處理Aware接口:

接著,Spring會檢測該對象是否實現(xiàn)了xxxAware接口,并將相關(guān)的xxxAware實例注入給Bean:

①如果這個Bean已經(jīng)實現(xiàn)了BeanNameAware接口,會調(diào)用它實現(xiàn)的setBeanName(String beanId)方法,此處傳遞的就是Spring配置文件中Bean的id值;

②如果這個Bean已經(jīng)實現(xiàn)了BeanFactoryAware接口,會調(diào)用它實現(xiàn)的setBeanFactory()方法,傳遞的是Spring工廠自身。

③如果這個Bean已經(jīng)實現(xiàn)了ApplicationContextAware接口,會調(diào)用setApplicationContext(ApplicationContext)方法,傳入Spring上下文;

(4)BeanPostProcessor:

如果想對Bean進(jìn)行一些自定義的處理,那么可以讓Bean實現(xiàn)了BeanPostProcessor接口,那將會調(diào)用postProcessBeforeInitialization(Object obj, String s)方法。由于這個方法是在Bean初始化結(jié)束時調(diào)用的,所以可以被應(yīng)用于內(nèi)存或緩存技術(shù);

(5)InitializingBean 與 init-method:

如果Bean在Spring配置文件中配置了 init-method 屬性,則會自動調(diào)用其配置的初始化方法。

(6)如果這個Bean實現(xiàn)了BeanPostProcessor接口,將會調(diào)用postProcessAfterInitialization(Object obj, String s)方法;

以上幾個步驟完成后,Bean就已經(jīng)被正確創(chuàng)建了,之后就可以使用這個Bean了。

(7)DisposableBean:

當(dāng)Bean不再需要時,會經(jīng)過清理階段,如果Bean實現(xiàn)了DisposableBean這個接口,會調(diào)用其實現(xiàn)的destroy()方法;

(8)destroy-method:

最后,如果這個Bean的Spring配置中配置了destroy-method屬性,會自動調(diào)用其配置的銷毀方法。

到此這篇關(guān)于Java之SpringBean生命周期問題理解的文章就介紹到這了,更多相關(guān)Java之SpringBean生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Hadoop實現(xiàn)Knn算法

    基于Hadoop實現(xiàn)Knn算法

    這篇文章主要為大家詳細(xì) 介紹了基于Hadoop實現(xiàn)Knn算法的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Java類加載器ClassLoader源碼層面分析講解

    Java類加載器ClassLoader源碼層面分析講解

    ClassLoader翻譯過來就是類加載器,普通的java開發(fā)者其實用到的不多,但對于某些框架開發(fā)者來說卻非常常見。理解ClassLoader的加載機(jī)制,也有利于我們編寫出更高效的代碼。ClassLoader的具體作用就是將class文件加載到j(luò)vm虛擬機(jī)中去,程序就可以正確運行了
    2022-09-09
  • Java線程的相關(guān)方法詳細(xì)解析

    Java線程的相關(guān)方法詳細(xì)解析

    以下是對Java線程的相關(guān)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下
    2013-09-09
  • Spring中的攔截器HandlerInterceptor詳細(xì)解析

    Spring中的攔截器HandlerInterceptor詳細(xì)解析

    這篇文章主要介紹了Spring中的攔截器HandlerInterceptor詳細(xì)解析,HandlerInterceptor 是 Spring 框架提供的一個攔截器接口,用于在請求處理過程中攔截和處理請求,需要的朋友可以參考下
    2024-01-01
  • IDEA中的HTTP Client使用教程

    IDEA中的HTTP Client使用教程

    這篇文章主要介紹了IDEA中的HTTP Client使用教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java自定義JDBC實現(xiàn)連接池

    java自定義JDBC實現(xiàn)連接池

    本文主要介紹了java自定義JDBC實現(xiàn)連接池,包含實現(xiàn)JDBC連接池以及SQLException?異常的處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • IDEA打包應(yīng)用程序的教程圖解

    IDEA打包應(yīng)用程序的教程圖解

    這篇文章主要介紹了IDEA打包應(yīng)用程序的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java 如何使用Velocity引擎生成代碼

    Java 如何使用Velocity引擎生成代碼

    代碼生成器,可以有效減少編寫重復(fù)代碼,快速實現(xiàn)簡單的業(yè)務(wù)邏輯,也能讓我們的代碼保持一致。那目前,我們看到的代碼生成器,大部分是基于velocity引擎模板生成的,接下來我們就學(xué)習(xí)一下如何實現(xiàn)代碼生成器。
    2021-06-06
  • Spring?Boot在開發(fā)過程中常用IDEA插件

    Spring?Boot在開發(fā)過程中常用IDEA插件

    這篇文章主要為大家介紹了Spring?Boot在開發(fā)過程中常用IDEA插件,幫助大家提高開發(fā)工作效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java?synchronized輕量級鎖實現(xiàn)過程淺析

    Java?synchronized輕量級鎖實現(xiàn)過程淺析

    這篇文章主要介紹了Java synchronized輕量級鎖實現(xiàn)過程,synchronized是Java里的一個關(guān)鍵字,起到的一個效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時禁止指令重排序和保證內(nèi)存的可見性
    2023-02-02

最新評論