亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring源碼解析之BeanPostProcessor知識(shí)總結(jié)

 更新時(shí)間:2021年06月09日 16:27:30   作者:隨波逐流baby  
今天給大家?guī)?lái)的文章是Spring的相關(guān)知識(shí),文章圍繞著B(niǎo)eanPostProcessor的使用展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下

一、簡(jiǎn)介

BeanPostProcessor是Spring IOC容器給我們提供的一個(gè)擴(kuò)展接口。

實(shí)例化Bean做前置處理、后置處理

二、接口定義

@Component
public class BeanPost  implements BeanPostProcessor {
   /**
     * 在每個(gè)bean創(chuàng)建之后的初始化方法之前調(diào)用
     * @param bean 當(dāng)前實(shí)例化的bean
     * @param beanName bean的名稱(chēng)
     * @return 返回實(shí)例化的bean或者可以對(duì)對(duì)象進(jìn)行再封裝返回
     * @throws BeansException
     */
    @Override
    public  Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化前"+beanName);
        return bean;
    }
    /**
     * 在每個(gè)bean的初始化方法執(zhí)行之后被調(diào)用
     * @param bean 當(dāng)前實(shí)例化的bean
     * @param beanName bean的名稱(chēng)
     * @return 返回實(shí)例化的bean或者可以對(duì)對(duì)象進(jìn)行再封裝返回
     * @throws BeansException
     */
    @Override
    public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化后"+beanName);
        return bean;
    }
}

運(yùn)行順序

實(shí)例化bean對(duì)象->設(shè)置對(duì)象屬性->檢查Aware接口設(shè)置依賴(lài)

->BeanPostProcessor前置處理->檢查是否是initializingBean以決定是否調(diào)用afterPropertiesSet方法->檢查是否配置自定義init-method->BeanPostProcessor后置處理->注冊(cè)必要的Destruction相關(guān)回調(diào)接口->。。。->是否實(shí)現(xiàn)DisposableBean接口->是否配置自定義destroy方法

三、源碼

1.由AnnotationConfigApplicationContext進(jìn)入

2.進(jìn)入構(gòu)造方法的refresh方法

3.進(jìn)入到finishBeanFactoryInitialization方法

4.進(jìn)入preInstantiateSingletons方法

5.執(zhí)行g(shù)etBean實(shí)例化方法

6創(chuàng)建bean實(shí)例

7.doCreateBean

8.進(jìn)入初始化接口

9.可以看到執(zhí)行到了BeanPostProcessor 提供的2個(gè)方法

進(jìn)入內(nèi)部可以看到

10.然后繼續(xù)往下走開(kāi)始AWare流程

內(nèi)部:

11.進(jìn)入invokeAwareInterfaces(bean);方法

內(nèi)部:

當(dāng)前bean實(shí)現(xiàn)了ApplicationContextAware接口

12.走到Person類(lèi)中的setApplicationContext方法

一入源碼深似海,苦海無(wú)邊,回頭是岸

到此這篇關(guān)于Spring源碼解析之BeanPostProcessor知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)BeanPostProcessor的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java超詳細(xì)介紹抽象類(lèi)與接口的使用

    Java超詳細(xì)介紹抽象類(lèi)與接口的使用

    在類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)稱(chēng)為抽象類(lèi),接口是Java中最重要的概念之一,它可以被理解為一種特殊的類(lèi),不同的是接口的成員沒(méi)有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類(lèi)和接口,感興趣的朋友一起看看吧
    2022-05-05
  • Java中的動(dòng)態(tài)代理和靜態(tài)代理詳細(xì)解析

    Java中的動(dòng)態(tài)代理和靜態(tài)代理詳細(xì)解析

    這篇文章主要介紹了Java中的動(dòng)態(tài)代理和靜態(tài)代理詳細(xì)解析,Java中的代理可以幫助被代理者完成一些前期的準(zhǔn)備工作和后期的善后工作,但是核心的業(yè)務(wù)邏輯仍然是由被代理者完成,需要的朋友可以參考下
    2023-11-11
  • 詳解Java中CountDownLatch異步轉(zhuǎn)同步工具類(lèi)

    詳解Java中CountDownLatch異步轉(zhuǎn)同步工具類(lèi)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著CountDownLatch異步轉(zhuǎn)同步工具類(lèi)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java銀行管理系統(tǒng)源碼

    java銀行管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了java銀行管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java基礎(chǔ)之邏輯運(yùn)算符知識(shí)總結(jié)

    Java基礎(chǔ)之邏輯運(yùn)算符知識(shí)總結(jié)

    今天帶大家學(xué)習(xí)Java基礎(chǔ)知識(shí),文中對(duì)Java邏輯運(yùn)算符進(jìn)行了非常詳細(xì)的介紹,有相關(guān)代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解spring boot配置 ssl

    詳解spring boot配置 ssl

    本篇文章主要介紹了詳解spring boot配置 ssl,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 基于Java快速實(shí)現(xiàn)一個(gè)簡(jiǎn)單版的HashMap詳解

    基于Java快速實(shí)現(xiàn)一個(gè)簡(jiǎn)單版的HashMap詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)底層數(shù)據(jù)結(jié)構(gòu)為數(shù)組?+?鏈表的HashMap,不考慮鏈表長(zhǎng)度超過(guò)8個(gè)時(shí)變?yōu)榧t黑樹(shù)的情況,需要的可以參考一下
    2023-02-02
  • Spring-全面詳解(學(xué)習(xí)總結(jié))

    Spring-全面詳解(學(xué)習(xí)總結(jié))

    這篇文章主要介紹了詳解Spring框架入門(mén),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望能給你帶來(lái)幫助
    2021-07-07
  • IDEA未配置SQL方言:無(wú)法使用SQL提示解決方法

    IDEA未配置SQL方言:無(wú)法使用SQL提示解決方法

    在使用IDEA進(jìn)行SQL開(kāi)發(fā)時(shí),如果未配置SQL方言可能會(huì)導(dǎo)致一些問(wèn)題,如無(wú)法正確識(shí)別數(shù)據(jù)庫(kù)中的關(guān)鍵字、數(shù)據(jù)類(lèi)型等,這篇文章主要給大家介紹了關(guān)于IDEA未配置SQL方言,無(wú)法使用SQL提示解決方法的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • idea新建聚合項(xiàng)目并附上標(biāo)簽的詳細(xì)過(guò)程

    idea新建聚合項(xiàng)目并附上標(biāo)簽的詳細(xì)過(guò)程

    這篇文章主要介紹了idea新建聚合項(xiàng)目并附上標(biāo)簽的詳細(xì)過(guò)程,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論