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...