BeanPostProcessor和BeanFactoryPostProcessor

BeanFactoryPostProcessor

Spring IoC容器允許BeanFactoryPostProcessor在容器實(shí)例化任何bean之前讀取bean的定義(配置元數(shù)據(jù)),并可以修改它。同時(shí)可以定義多個(gè)BeanFactoryPostProcessor,通過(guò)設(shè)置'order'屬性來(lái)確定各個(gè)BeanFactoryPostProcessor執(zhí)行順序。

注冊(cè)一個(gè)BeanFactoryPostProcessor實(shí)例需要定義一個(gè)Java類來(lái)實(shí)現(xiàn)BeanFactoryPostProcessor接口,并重寫(xiě)該接口的postProcessorBeanFactory方法。通過(guò)beanFactory可以獲取bean的定義信息,并可以修改bean的定義信息。

public interface BeanFactoryPostProcessor {

    /**
     * 參數(shù)是beanFactory,這時(shí)候可以從beanFactory取出自己感興趣的BeanDefinition,做修改。這時(shí)候Bean還沒(méi)實(shí)例化的。
     */
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

}

BeanPostProcessor

如果我們想在Spring容器中完成bean實(shí)例化、配置以及其他初始化方法前后要添加一些自己邏輯處理。我們需要定義一個(gè)或多個(gè)BeanPostProcessor接口實(shí)現(xiàn)類,然后注冊(cè)到Spring IoC容器中。

public interface BeanPostProcessor {

    /**
     * 在bean初始化之前執(zhí)行(比如InitializingBean的afterPropertiesSet方法或者自定義的初始化方法)。返回最終使用的Bean對(duì)象(可以做自定義處理,比如包裝原先的Bean實(shí)例)
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
     * 在bean初始化之后執(zhí)行(比如InitializingBean的afterPropertiesSet方法或者自定義的初始化方法)。返回最終使用的Bean對(duì)象(可以做自定義處理,比如包裝原先的Bean實(shí)例)
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡(jiǎn)書(shū) 3.8 Container Exten...
    SnailTyan閱讀 1,305評(píng)論 0 6
  • Spring容器高層視圖 Spring 啟動(dòng)時(shí)讀取應(yīng)用程序提供的Bean配置信息,并在Spring容器中生成一份相...
    Theriseof閱讀 2,916評(píng)論 1 24
  • 什么是Spring Spring是一個(gè)開(kāi)源的Java EE開(kāi)發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,771評(píng)論 1 133
  • 1 梁思華失戀了。 這段感情的無(wú)疾而終是大家意料之內(nèi)的事情,然而讓一眾好友想不到的是,她竟然崩潰到了要自殺的地步。...
    葉十二月閱讀 1,101評(píng)論 0 1
  • 緣分這個(gè)東西,真的是太過(guò)神奇,原本以為從此再無(wú)交集的兩個(gè)人,卻能夠在某天某個(gè)時(shí)刻,以一種意想不到的方式重逢。 進(jìn)入...
    李阿貓閱讀 400評(píng)論 0 0

友情鏈接更多精彩內(nèi)容