Spring容器的創(chuàng)建過(guò)程之如何注冊(cè)BeanPostProcessor詳解
注冊(cè)BeanPostProcessor
refresh()
調(diào)用registerBeanPostProcessors(beanFactory)
方法,注冊(cè)Bean的后置處理器,后置處理器是用來(lái)攔截bean創(chuàng)建過(guò)程的。
不同接口類型的BeanPostProcessor
,即繼承了BeanPostProcessor
接口的子接口,在Bean創(chuàng)建前后的執(zhí)行時(shí)機(jī)是不一樣的
BeanPostProcessor
DestructionAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor
SmartInstantiationAwareBeanPostProcessor
MergedBeanDefinitionPostProcessor
首先獲取所有的BeanPostProcessor
后置處理器都默認(rèn)可以通過(guò)PriorityOrdered
、Ordered
這兩個(gè)接口來(lái)指定執(zhí)行優(yōu)先級(jí)
先注冊(cè)實(shí)現(xiàn)了priorityOrdered
優(yōu)先級(jí)接口的BeanPostProcessor
,調(diào)用registerBeanPostProcessors()
方法進(jìn)行注冊(cè)
registerBeanPostProcessors()
方法調(diào)用addBeanPostProcessor()
方法將BeanPostProcessor
添加到BeanFactory
中
再注冊(cè)實(shí)現(xiàn)了Ordered
優(yōu)先級(jí)接口的BeanPostProcessor
最后注冊(cè)沒(méi)有實(shí)現(xiàn)任何優(yōu)先級(jí)接口的BeanPostProcessor
最終注冊(cè)MergedBeanDefinitionPostProcessor
類型的BeanPostProcessor
還會(huì)注冊(cè)一個(gè)ApplicationListenerDetector
來(lái)在Bean創(chuàng)建完成后檢查是否ApplicationListener
,如果是,就會(huì)把這個(gè)監(jiān)聽器bean放在容器中保存起來(lái)
到此這篇關(guān)于Spring容器的創(chuàng)建過(guò)程之如何注冊(cè)BeanPostProcessor詳解的文章就介紹到這了,更多相關(guān)注冊(cè)BeanPostProcessor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring?BeanPostProcessor后處理器源碼解析
- 關(guān)于Spring BeanPostProcessor的執(zhí)行順序
- Spring BeanPostProcessor(后置處理器)的用法
- SpringBoot之通過(guò)BeanPostProcessor動(dòng)態(tài)注入ID生成器案例詳解
- 詳解使用Spring的BeanPostProcessor優(yōu)雅的實(shí)現(xiàn)工廠模式
- Spring中的后置處理器BeanPostProcessor詳解
- Spring BeanPostProcessor接口使用詳解
- 解析Java的Spring框架的BeanPostProcessor發(fā)布處理器
- spring中BeanPostProcessor的作用和使用注意事項(xiàng)
相關(guān)文章
RocketMQ根據(jù)Tag進(jìn)行消息過(guò)濾
消費(fèi)者訂閱了某個(gè)主題后,Apache RocketMQ 會(huì)將該主題中的所有消息投遞給消費(fèi)者。若消費(fèi)者只需要關(guān)注部分消息,可通過(guò)設(shè)置過(guò)濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過(guò)濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無(wú)效的消息2023-02-02JAVA抽象類和抽象方法(abstract)實(shí)例分析
這篇文章主要介紹了JAVA抽象類和抽象方法(abstract),結(jié)合實(shí)例形式分析了java抽象類及抽象方法相關(guān)定義、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-11-11spring-data-redis自定義實(shí)現(xiàn)看門狗機(jī)制
redission看門狗機(jī)制是解決分布式鎖的續(xù)約問(wèn)題,本文主要介紹了spring-data-redis自定義實(shí)現(xiàn)看門狗機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Android開發(fā)中實(shí)現(xiàn)用戶注冊(cè)和登陸的代碼實(shí)例分享
這篇文章主要介紹了Android開發(fā)中實(shí)現(xiàn)用戶注冊(cè)和登陸的代碼實(shí)例分享,只是實(shí)現(xiàn)基本功能,界面華麗度就請(qǐng)忽略啦XD 需要的朋友可以參考下2015-12-12SpringBoot集成阿里巴巴Druid監(jiān)控的示例代碼
這篇文章主要介紹了SpringBoot集成阿里巴巴Druid監(jiān)控的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04詳談異步log4j2中的location信息打印問(wèn)題
這篇文章主要介紹了詳談異步log4j2中的location信息打印問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12java利用pdfbox+poi往pdf插入數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于java利用pdfbox+poi如何往pdf插入數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02關(guān)于SpringBoot 打包成的可執(zhí)行jar不能被其他項(xiàng)目依賴的問(wèn)題
這篇文章主要介紹了關(guān)于SpringBoot 打包成的可執(zhí)行jar不能被其他項(xiàng)目依賴的問(wèn)題,本文給大家通過(guò)圖文實(shí)例相結(jié)合給大家分享解決方法,需要的朋友可以參考下2020-10-10springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查
這篇文章主要介紹了springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04