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

Spring源碼解析之BeanPostProcessor知識總結

 更新時間:2021年06月09日 16:27:30   作者:隨波逐流baby  
今天給大家?guī)淼奈恼率荢pring的相關知識,文章圍繞著BeanPostProcessor的使用展開,文中有非常詳細的介紹,需要的朋友可以參考下

一、簡介

BeanPostProcessor是Spring IOC容器給我們提供的一個擴展接口。

實例化Bean做前置處理、后置處理

二、接口定義

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

運行順序

實例化bean對象->設置對象屬性->檢查Aware接口設置依賴

->BeanPostProcessor前置處理->檢查是否是initializingBean以決定是否調用afterPropertiesSet方法->檢查是否配置自定義init-method->BeanPostProcessor后置處理->注冊必要的Destruction相關回調接口->。。。->是否實現DisposableBean接口->是否配置自定義destroy方法

三、源碼

1.由AnnotationConfigApplicationContext進入

2.進入構造方法的refresh方法

3.進入到finishBeanFactoryInitialization方法

4.進入preInstantiateSingletons方法

5.執(zhí)行getBean實例化方法

6創(chuàng)建bean實例

7.doCreateBean

8.進入初始化接口

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

進入內部可以看到

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

內部:

11.進入invokeAwareInterfaces(bean);方法

內部:

當前bean實現了ApplicationContextAware接口

12.走到Person類中的setApplicationContext方法

一入源碼深似海,苦海無邊,回頭是岸

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

相關文章

  • Java超詳細介紹抽象類與接口的使用

    Java超詳細介紹抽象類與接口的使用

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

    Java中的動態(tài)代理和靜態(tài)代理詳細解析

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

    詳解Java中CountDownLatch異步轉同步工具類

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著CountDownLatch異步轉同步工具類展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java銀行管理系統(tǒng)源碼

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

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

    Java基礎之邏輯運算符知識總結

    今天帶大家學習Java基礎知識,文中對Java邏輯運算符進行了非常詳細的介紹,有相關代碼示例,對正在學習java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解spring boot配置 ssl

    詳解spring boot配置 ssl

    本篇文章主要介紹了詳解spring boot配置 ssl,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 基于Java快速實現一個簡單版的HashMap詳解

    基于Java快速實現一個簡單版的HashMap詳解

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

    Spring-全面詳解(學習總結)

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

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

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

    idea新建聚合項目并附上標簽的詳細過程

    這篇文章主要介紹了idea新建聚合項目并附上標簽的詳細過程,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08

最新評論