最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之SpringBean生命周期問題理解

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

Spring Bean的生命周期?

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

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

(1)實例化Bean:

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

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

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

(3)處理Aware接口:

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

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

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

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

(4)BeanPostProcessor:

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

(5)InitializingBean 與 init-method:

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

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

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

(7)DisposableBean:

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

(8)destroy-method:

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

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

相關文章

  • SpringBoot集成極光推送的實現(xiàn)代碼

    SpringBoot集成極光推送的實現(xiàn)代碼

    工作中經(jīng)常會遇到服務器向App推送消息的需求,一般企業(yè)中選擇用極光推送的比較多,本文就介紹了SpringBoot集成極光推送的實現(xiàn)代碼,感興趣的可以了解一下
    2023-08-08
  • springboot實現(xiàn)返回視圖而不是string的方法

    springboot實現(xiàn)返回視圖而不是string的方法

    這篇文章主要介紹了springboot實現(xiàn)返回視圖而不是string的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù)

    詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù)

    本文主要介紹了詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談Java線程池的7大核心參數(shù)

    淺談Java線程池的7大核心參數(shù)

    本篇文章基于正在看這篇文章的你已經(jīng)具備了基本的Java并發(fā)的相關知識.如果對于Java并發(fā)編程一無所知的話,請先看看Java并發(fā)編程的一些前導基礎知識,文中有非常詳細的圖文示例及代碼,,需要的朋友可以參考下
    2021-05-05
  • java.util.Date與java.sql.Date的區(qū)別

    java.util.Date與java.sql.Date的區(qū)別

    這篇文章主要介紹了java.util.Date與java.sql.Date的區(qū)別的相關資料,需要的朋友可以參考下
    2015-07-07
  • java實現(xiàn)登錄窗口

    java實現(xiàn)登錄窗口

    這篇文章主要為大家詳細介紹了java實現(xiàn)登錄窗口,含驗證碼驗證、賬戶注冊等,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • java+vue3+el-tree實現(xiàn)樹形結構操作代碼

    java+vue3+el-tree實現(xiàn)樹形結構操作代碼

    基于springboot + vue3 elementPlus實現(xiàn)樹形結構數(shù)據(jù)的添加、刪除和頁面展示,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Java源碼深度分析String與StringBuffer及StringBuilder詳解

    Java源碼深度分析String與StringBuffer及StringBuilder詳解

    當對字符串進行修改的時候,需要使用?StringBuffer?和?StringBuilder類,和String類不同的是,StringBuffer和?StringBuilder類的對象能夠被多次的修改,并且不產生新的未使用對象,本篇我們來分析分析它們的源碼
    2022-05-05
  • SpringBoot整合Mybatis-plus的具體使用

    SpringBoot整合Mybatis-plus的具體使用

    本文主要介紹了SpringBoot整合Mybatis-plus的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • springboot集成springCloud中gateway時啟動報錯的解決

    springboot集成springCloud中gateway時啟動報錯的解決

    這篇文章主要介紹了springboot集成springCloud中gateway時啟動報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

祁连县| 临清市| 泰州市| 兴安县| 三台县| 普定县| 宜阳县| 福清市| 遂平县| 宁海县| 西昌市| 广德县| 大安市| 新源县| 丰顺县| 依安县| 抚松县| 万山特区| 武清区| 东乡族自治县| 米易县| 金华市| 策勒县| 汝城县| 宁都县| 和政县| 红安县| 鹿泉市| 定边县| 西华县| 新平| 丰都县| 新河县| 兴义市| 新疆| 志丹县| 如皋市| 瓮安县| 天台县| 广水市| 都匀市|