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

Spring創(chuàng)建Bean的流程分享

 更新時間:2025年11月19日 08:46:57   作者:YogaK  
Spring創(chuàng)建Bean流程主要包括實(shí)例化、屬性賦值、初始化和銷毀四個階段,實(shí)例化通過new關(guān)鍵字進(jìn)行,屬性賦值通過BeanDefinition獲取并注入,處理Aware接口以獲取Spring容器資源,調(diào)用InitializingBean和init-method進(jìn)行初始化,最后通過DisposableBean和destory-method進(jìn)行銷毀

Spring創(chuàng)建Bean流程


大致步驟

簡單來說:Bean會經(jīng)歷四個階段: 實(shí)例化–》屬性賦值–》初始化–》銷毀

具體來說:

  • 實(shí)例化:new xxx();有兩個時候會觸發(fā)實(shí)例化:

像容器申請一個Bean的時候

當(dāng)容器在初始化一個Bean的時候,發(fā)現(xiàn)該Bean還依賴另一個Bean。(在BeanDefinition中找到)

  • 設(shè)置對象屬性:通過BD找到Bean需要注入的一些屬性,并注入,當(dāng)發(fā)現(xiàn)依賴另一個對象時,觸發(fā)另一個對象的實(shí)例化。
  • 處理Aware接口:Spring會檢測對象是否實(shí)現(xiàn)了XxxAware接口,如果實(shí)現(xiàn)了,就會調(diào)用對應(yīng)的方法。例如BeanNameAware(對BeanName進(jìn)行設(shè)置)、BeanClassLoaderAware(傳入一個自定義類加載器)、BeanFactoryAware(擴(kuò)展BeanFactory)BeanPostProcessor的前置處理。
  • initializingBean: Spring檢測對象如果實(shí)現(xiàn)了這個接口,就會執(zhí)行他的afterPropertiesSet()方法,定制初始化邏輯。
  • init-method:如果Spring發(fā)現(xiàn)Bean實(shí)現(xiàn)了這個屬性,就會調(diào)用他的配置方法,執(zhí)行初始化邏輯。或者使用注解 BeanPostProcessor的后置處理。到目前位置,Bean的創(chuàng)建過程就完成了,可以正常使用了。
  • DisposableBean:當(dāng)Bean實(shí)現(xiàn)了這個接口,在銷毀前就會調(diào)用destory()方法
  • destory-method:銷毀方法,可以進(jìn)行內(nèi)存回收,通過@PreDestory注解

各個接口介紹

1.什么是BeanDefinition?

? BeanDefinition 是定義 Bean 的配置元信息接口

  • Bean 的類名
  • 設(shè)置父 bean 名稱
  • Bean 行為配置信息,作用域、自動綁定模式、生命周期回調(diào)、延遲加載、初始方法、銷毀方法等
  • Bean 之間的依賴設(shè)置,dependencies
  • 構(gòu)造參數(shù)、屬性設(shè)置

2.Aware接口

該接口是一個標(biāo)識接口,具體的方法需要子類自己去實(shí)現(xiàn)。

Aware類型的接口的作用就是讓我們能夠拿到Spring容器中的一些資源。

基本都能夠見名知意,Aware之前的名字就是可以拿到什么資源,例如BeanNameAware可以拿到BeanName,以此類推。

調(diào)用時機(jī)需要注意:所有的Aware方法都是在初始化階段之前調(diào)用的!

3.BeanPostProcessor

做通知。

4.initializingBean

afterPropertiesSet這個方法可以用在一些特殊情況中,也就是某個對象的某個屬性需要經(jīng)過外界得到。

比如說查詢數(shù)據(jù)庫等方式,這時候可以用到spring的該特性,只需要實(shí)現(xiàn)InitializingBean即可

5.init-method

用來替代繼承 InitializingBean接口

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven插件docker-maven-plugin的使用

    Maven插件docker-maven-plugin的使用

    在我們持續(xù)集成過程中,項(xiàng)目工程一般使用 Maven 編譯打包,然后生成鏡像,docker-maven-plugin 插件就是為了幫助我們在Maven工程中,通過簡單的配置,自動生成鏡像并推送到倉庫中。感興趣的可以了解一下
    2021-06-06
  • springboot如何通過接口實(shí)現(xiàn)動態(tài)二維碼的定時刷新

    springboot如何通過接口實(shí)現(xiàn)動態(tài)二維碼的定時刷新

    這篇文章主要為大家詳細(xì)介紹了springboot如何通過接口實(shí)現(xiàn)動態(tài)二維碼的定時刷新功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    本文主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java多線程atomic包介紹及使用方法

    Java多線程atomic包介紹及使用方法

    這篇文章主要介紹了Java多線程atomic包介紹及使用方法,涉及原子更新基本類型介紹及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • MongoDB在Spring Boot中的使用方式舉例介紹

    MongoDB在Spring Boot中的使用方式舉例介紹

    MongoDB是基于Json數(shù)據(jù)結(jié)構(gòu)的非關(guān)系型數(shù)據(jù)庫,每一個Json文檔有一個唯一的主鍵,下面通過實(shí)例代碼講解MongoDB在Spring Boot中的使用方式,感興趣的朋友一起看看吧
    2025-05-05
  • CentOS7和8中安裝Maven3.8.4的簡單步驟

    CentOS7和8中安裝Maven3.8.4的簡單步驟

    maven是屬于apache的一個工具,主要是對java進(jìn)行編譯打包,解決依賴關(guān)系,下面這篇文章主要給大家介紹了關(guān)于CentOS7和8中安裝Maven3.8.4的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 為什么rest接口返回json建議采用下劃線形式,不要用駝峰

    為什么rest接口返回json建議采用下劃線形式,不要用駝峰

    為什么rest接口返回json建議采用下劃線形式,不要用駝峰?今天小編就來為大家說明一下原因,還等什么?一起跟隨小編過來看看吧
    2020-09-09
  • Mybatis ResultType如何處理返回類型

    Mybatis ResultType如何處理返回類型

    這篇文章主要介紹了Mybatis ResultType如何處理返回類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署

    詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署

    本篇文章主要介紹了詳解SpringBoot配置devtools實(shí)現(xiàn)熱部署 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 如何在Spring Boot項(xiàng)目中集成MQTT協(xié)議

    如何在Spring Boot項(xiàng)目中集成MQTT協(xié)議

    本文介紹在SpringBoot中集成MQTT的步驟,包括安裝Broker、添加Eclipse Paho依賴、配置連接參數(shù)、實(shí)現(xiàn)消息發(fā)布訂閱、測試接口及注意事項(xiàng),如唯一客戶端ID、安全措施等,幫助開發(fā)者快速實(shí)現(xiàn)物聯(lián)網(wǎng)通信,感興趣的朋友一起看看吧
    2025-06-06

最新評論

红安县| 汾西县| 崇义县| 留坝县| 景谷| 德清县| 明光市| 商都县| 林西县| 玉环县| 建阳市| 易门县| 兴城市| 谢通门县| 利辛县| 江西省| 卢湾区| 鹿泉市| 涟水县| 抚宁县| 长治县| 隆化县| 抚松县| 黎城县| 获嘉县| 内乡县| 西安市| 彭州市| 安吉县| 武宣县| 民乐县| 乐东| 商都县| 万盛区| 花垣县| 喀喇| 蕲春县| 冷水江市| 永年县| 嘉祥县| 当雄县|