1. 程式人生 > >Spring原始碼分析:Spring中的後置處理器BeanPostProcessor

Spring原始碼分析:Spring中的後置處理器BeanPostProcessor

BeanPostProcessor簡介

BeanPostProcessor是Spring IOC容器給我們提供的一個擴充套件介面,如果我們需要在容器完成Bean的例項、初始化方法前後新增一些自己的邏輯處理,那麼定義一個BeanPostProcessor介面的實現類。

BeanPostProcessor介面宣告

postProcessorBeforeInitailization方法:在bean例項化,依賴注入之後及自定義初始化方法(例如:配置檔案中bean標籤新增init-method屬性指定Java類中初始化方法、 @PostConstruct註解指定初始化方法、Java類實現InitailztingBean介面)之前呼叫

postProcessorAfterInitailization方法:在bean例項化、依賴注入及自定義初始化方法之後呼叫

ApplicationContext容器會自動檢測Spring配置檔案中那些bean所對應的Java類實現了BeanPostProcessor 介面,並呼叫addBeanPostProcessor() 把它們註冊為後置處理器。  

測試類

 

執行結果: 

 

在Spring機制中可以指定後置處理器呼叫順序,通過讓BeanPostProcessor介面實現類實現PriorityOrdered介面getOrder方法,該方法返回int整數,預設值為 0,優先順序最高,值越大優先順序越低 。

 

再定義一個後置處理器 ,同時實現PriorityOrdered介面,getOrder方法返回200,並註冊到IOC容器中,再次執行結果如下: