欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Spring中Bean后置處理器(BeanPostProcessor)的使用

 更新時(shí)間:2022年06月10日 16:13:08   作者:倔強(qiáng)的牛角  
BeanPostProcessor 接口也被稱(chēng)為Bean后置處理器,通過(guò)該接口可以自定義調(diào)用初始化前后執(zhí)行的操作方法。本文將詳細(xì)講講它的使用,需要的可以參考一下

一、BeanPostProcessor接口

Bean后置處理:對(duì)Spring 工廠創(chuàng)建的對(duì)象進(jìn)行二次加工處理,即預(yù)初始化和后初始化。

PostProcessor中文意思就是后置處理器。

BeanPostProcessor 接口也被稱(chēng)為Bean后置處理器,通過(guò)該接口可以自定義調(diào)用初始化前后執(zhí)行的操作方法。

該接口中包含了兩個(gè)方法:before方法(預(yù)初始化)和after方法(后廚是化)

postProcessBeforeInitialization() 方法:在 Bean 實(shí)例化、屬性注入后,初始化前調(diào)用。

postProcessAfterInitialization() 方法:在 Bean 實(shí)例化、屬性注入、初始化都完成后調(diào)用。

二、案例

創(chuàng)建User類(lèi),為了更好的觀察bean周期執(zhí)行流程,在類(lèi)中添加無(wú)參構(gòu)造器方法、setter注入方法init()初始化方法destory()銷(xiāo)毀方法,并在方法中都輸出一句話。代碼如下

/**
 * 觀察bean周期執(zhí)行流程
 */
public class User {
    String name;
    int age;

    //無(wú)參構(gòu)造方法
    public User() {
        System.out.println("這是無(wú)參構(gòu)造方法");
    }

    //setter方法
    public void setName(String name) {
        System.out.println("這是setter注入name");
        this.name = name;
    }

    public void setAge(int age) {
        System.out.println("這是setter注入age");
        this.age = age;
    }

    //初始化回調(diào)方法
    public void init() throws Exception {
        System.out.println("這是初始化回調(diào)方法");
    }

    //銷(xiāo)毀回調(diào)方法
    public void destroy() throws Exception {
        System.out.println("這是銷(xiāo)毀回調(diào)方法");
    }

    //toString方法
    @Override
    public String toString() {
        return "User{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}

創(chuàng)建PostProcessor類(lèi),實(shí)現(xiàn)BeanPostProcessor接口,并重寫(xiě)預(yù)初始化方法postProcessBeforeInitialization()和后初始化方法postProcessAfterInitialization()

/**
 * Spring Bean后置處理器
 */
public class PostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(beanName+"正在執(zhí)行預(yù)初始化方法");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(beanName+"正在執(zhí)行后初始化方法");
        return bean;
    }
}

編寫(xiě)spring配置文件,添加bean

<!--添加user bean-->
<bean id="user" class="com.bighorn.pojo.User" init-method="init" destroy-method="destroy">
    <property name="name" value="bighorn"/>
    <property name="age" value="18"/>
</bean>
<!-- 注冊(cè)后置處理器 -->
<bean id="postProcessor" class="com.bighorn.config.PostProcessor"/>

編寫(xiě)運(yùn)行程序

    public static void main(String[] args) {
        //獲取 ClassPathXmlApplicationContext 容器
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //從容器中獲取對(duì)象
        User user = context.getBean("user", User.class);
        //使用bean
        System.out.println("使用bean:"+user);
        //調(diào)用close方法關(guān)閉容器
        context.close();
    }

運(yùn)行結(jié)果如下,通過(guò)結(jié)果我們可以清晰地看到bean生命周期執(zhí)行流程。

三、總結(jié)

實(shí)際開(kāi)發(fā)中,spring bean初始化操作比較少,一般采用后置處理器加工bean。

后置處理器有兩個(gè)方法:before和after方法。推薦使用after方法,即后初始化方法。

到此這篇關(guān)于詳解Spring中Bean后置處理器(BeanPostProcessor)的使用的文章就介紹到這了,更多相關(guān)SpringBean后置處理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA操作XML實(shí)例分析

    JAVA操作XML實(shí)例分析

    這篇文章主要介紹了JAVA操作XML的方法,實(shí)例分析了java操作XML文件的常用技巧,需要的朋友可以參考下
    2015-03-03
  • SpringBoot中各種Controller的寫(xiě)法

    SpringBoot中各種Controller的寫(xiě)法

    這篇文章主要介紹了SpringBoot中各種Controller的寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • interrupt()和線程終止方式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    interrupt()和線程終止方式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    線程的thread.interrupt()方法是中斷線程,將會(huì)設(shè)置該線程的中斷狀態(tài)位,即設(shè)置為true,中斷的結(jié)果線程是死亡、還是等待新的任務(wù)或是繼續(xù)運(yùn)行至下一步,就取決于這個(gè)程序本身
    2017-05-05
  • java環(huán)境變量配置超詳細(xì)圖文教程

    java環(huán)境變量配置超詳細(xì)圖文教程

    在我們學(xué)習(xí)Java語(yǔ)言的時(shí)候,要在命令提示符里運(yùn)用Java和Javac,用到這兩個(gè)命令的時(shí)候就要配置Java環(huán)節(jié)變量才可以,這篇文章主要給大家介紹了關(guān)于java環(huán)境變量配置的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • java字符串所有操作方法匯總

    java字符串所有操作方法匯總

    這篇文章主要介紹了java字符串所有操作方法匯總,需要的朋友可以參考下,在實(shí)際的編程中,我們經(jīng)常需要對(duì)字符串進(jìn)行各種操作,例如連接、截取、替換等,本文將按類(lèi)別介紹一些Java字符串的常用方法,幫助讀者更好地理解和使用
    2023-11-11
  • Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解

    Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解

    池化思想是一種空間換時(shí)間的思想,期望使用預(yù)先創(chuàng)建好的對(duì)象來(lái)減少頻繁創(chuàng)建對(duì)象的性能開(kāi)銷(xiāo),java中有多種池化思想的應(yīng)用,例如:數(shù)據(jù)庫(kù)連接池、線程池等,下面就來(lái)具體講講
    2023-05-05
  • 詳解IDEA 中使用Maven創(chuàng)建項(xiàng)目常見(jiàn)錯(cuò)誤和使用技巧(推薦)

    詳解IDEA 中使用Maven創(chuàng)建項(xiàng)目常見(jiàn)錯(cuò)誤和使用技巧(推薦)

    這篇文章主要介紹了詳解IDEA 中使用Maven創(chuàng)建項(xiàng)目常見(jiàn)錯(cuò)誤和使用技巧(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類(lèi)型)

    SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類(lèi)型)

    這篇文章主要介紹了SpringBoot調(diào)第三方WebService接口的操作代碼(.wsdl與.asmx類(lèi)型 ),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java函數(shù)式編程(八):字符串及方法引用

    Java函數(shù)式編程(八):字符串及方法引用

    這篇文章主要介紹了Java函數(shù)式編程(八):字符串及方法引用,本文是系列文章的第8篇,其它文章請(qǐng)參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • 淺談Java數(shù)組的一些使用方法及堆棧存儲(chǔ)

    淺談Java數(shù)組的一些使用方法及堆棧存儲(chǔ)

    下面小編就為大家?guī)?lái)一篇淺談Java數(shù)組的一些使用方法及堆棧存儲(chǔ)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論