Spring原始碼之PostProcessor介面

2021-10-06 11:37:15 字數 1516 閱讀 8512

spring框架提供了各種postprocessor的介面,作為容器或者bean的後置處理器,其實這些postprocessor本省也是需要註冊到容器總的bean,裡面定義的方法會在特定的時期唄容器所呼叫。

通過這種機制框架自身或者開發者再不改變容器或者bean核心邏輯的的情況下對進行擴充套件或者定義。 比如包裝bean,影響他的行為,修改他的內容。

1.beandefinitionregistrypostprocessor即beandefinitionregistry的後置處理器

2.beanfactorypostprocessor

簡單容器的後置處理器

3.beanpostprocessor

根據注釋說明,可以在正常的beanfactorypostprocessor檢測之前註冊更多的 beandefinition

測試

@configuration

public class customizedbeandefinitionregistrypostprocessor implements beandefinitionregistrypostprocessor

@override

public void postprocessbeanfactory

(configurablelistablebeanfactory beanfactory) throws bean***ception

}

然後執行啟動類

是可以獲取到user的。

因此我們可以利用這種能力,去實現搜尋某些第三方的class,然後註冊進容器裡面,mybatis就是這麼做的。

根據注釋可以明白,主要影響容器裡面的行為。

@configuration

public class customizedbeanpostprocessor implements beanpostprocessor

//初始化之後

@override

public object postprocessafterinitialization

(object bean, string beanname) throws bean***ception

}

這樣子寫了之後,再容器初始化每個bean的時候,都會處理這樣的邏輯。

因此我們可以利用這個能力對bean包裝一些通用的邏輯包裝。這不就是aop嗎?

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

Spring原始碼之BeanDefinition解析

public void refresh throws bean ception,illegalstateexception catch bean ception var9 this destroybeans this cancelrefresh var9 throw var9 finally 從 裡...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...