Spring容器擴充套件機制

2021-09-13 02:07:01 字數 1380 閱讀 1756

ioc 容器負責管理容器中所有 bean 的生命週期, 而在 bean 生命週期的不同階段, spring 提供了不同的擴充套件點來改變 bean 的命運. 在容器的啟動階段,beanfactorypostprocessor允許我們在容器例項化相應物件之前, 對註冊到容器的beandefinition所儲存的資訊做一些額外的操作, 比如修改 bean 定義的某些屬性或者增加其他資訊等.

如果希望在spring容器完成例項化、配置和初始化bean之後實現某些自定義邏輯, 則可以實現乙個或多個beanpostprocessor介面.

public inte***ce beanpostprocessor 

@nullable

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

}

在 bean 例項化之後會先執行postprocessbeforeinitialization方法, 再執行 bean 的初始化方法, 然後在執行postprocessafterinitialization方法.

此介面只有乙個方法int getorder();用來設定執行順序.

如果實現多個beanpostprocessor介面, 我們就可以實現ordered介面來設定執行順序.

@component

public class test implements beanpostprocessor, ordered

@override

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

@override

public int getorder()

}

也可以使用@order註解進行排序

@configuration

@order(2)

public class demo1config

}

在容器例項化相應物件之前, 對註冊到容器的beandefinition所儲存的資訊做一些額外的操作可以實現此介面.

beanfactorypostprocessor會處理一些元資料.

beanpostprocessor會處理例項化後的物件.

Spring2 5 容器擴充套件點

spring容器被設計成可擴充套件的,可以通過plugin各種整合介面實現來進行擴充套件。用beanpostporcesser定製bean 此介面中定義了幾個 方法,實現該介面可實現自定義的例項化邏輯 依賴解析邏輯等。如果配置了多個beanpostprocesser,可以通過 order 屬性控制b...

spring 擴充套件

beanfactorypostprocessor 介面 物件例項化之前 1.實現 beandefinitionregistrypostprocessor介面 2.實現 beanfactorypostprocessor 介面 beanpostprocessor介面 建立時還沒建立,返回 物件 3.實現...

Spring原始碼學習之容器的功能擴充套件

我們都站在巨人的肩膀上 宣告 參考 spring原始碼深度解析 beanfactory bf new xmlbeanfactory new classpathresource beanfactorytest.xml 2.設定配置路徑public void setconfiglocations str...