最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、BeanPostProcessor接口

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

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

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

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

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

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

二、案例

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

/**
 * 觀察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)方法");
    }

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

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

創(chuàng)建PostProcessor類,實(shí)現(xiàn)BeanPostProcessor接口,并重寫預(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;
    }
}

編寫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"/>

編寫運(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í)際開發(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中MapStruct入門使用及對(duì)比

    Java中MapStruct入門使用及對(duì)比

    MapStruct是一個(gè)Java注解處理器框架,用于簡(jiǎn)化Java Bean之間的映射,本文主要介紹了Java中MapStruct入門使用及對(duì)比,感興趣的可以了解一下
    2023-12-12
  • IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決方案

    IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決

    原來(lái)win10電腦上安裝的是jdk8的版本,因某些原因,現(xiàn)在想換成jdk7的版本,修改環(huán)境變量后,在cmd中執(zhí)行 [java -version]命令,顯示的是7的版本,遇到這樣的問(wèn)題如何解決呢?下面小編給大家分享IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決方案,一起看看吧
    2023-09-09
  • java swing實(shí)現(xiàn)簡(jiǎn)單計(jì)算器界面

    java swing實(shí)現(xiàn)簡(jiǎn)單計(jì)算器界面

    這篇文章主要為大家詳細(xì)介紹了java swing實(shí)現(xiàn)簡(jiǎn)單計(jì)算器界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 解決MyBatis返回結(jié)果類型為Boolean的問(wèn)題

    解決MyBatis返回結(jié)果類型為Boolean的問(wèn)題

    這篇文章主要介紹了解決MyBatis返回結(jié)果類型為Boolean的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • java中使用map排序的實(shí)例講解

    java中使用map排序的實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于java中使用map排序的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Java Unsafe 類的講解

    Java Unsafe 類的講解

    這篇文章主要給大家分享了 Java Unsafe 類的講解,文章圍繞Unsafe 類的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價(jià)值需要的朋友可以參考一下
    2021-11-11
  • mybatis中的異常BindingException詳解

    mybatis中的異常BindingException詳解

    這篇文章主要介紹了mybatis中的異常BindingException詳解,此異常是mybatis中拋出的,意思是使用的這個(gè)方法找到,但是因?yàn)閙apperScan()已經(jīng)掃描到了Mapper類了,在綁定Mapper.xml時(shí)沒有綁定到導(dǎo)致的,需要的朋友可以參考下
    2024-01-01
  • SpringBoot web靜態(tài)資源配置詳解

    SpringBoot web靜態(tài)資源配置詳解

    這篇文章主要介紹了SpringBoot web靜態(tài)資源配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口

    Java調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • Bean?Searcher配合SpringBoot的使用詳解

    Bean?Searcher配合SpringBoot的使用詳解

    這篇文章主要介紹了Bean?Searcher配合SpringBoot的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

岑溪市| 乳山市| 岳阳市| 乌鲁木齐市| 东乌珠穆沁旗| 武汉市| 会同县| 金乡县| 德惠市| 湘乡市| 凤冈县| 会昌县| 四子王旗| 山阴县| 朝阳县| 曲松县| 尼勒克县| 金坛市| 淮北市| 津南区| 丹江口市| 开原市| 凌海市| 定南县| 弥勒县| 始兴县| 承德市| 新乡县| 通河县| 贵定县| 浑源县| 泌阳县| 孝昌县| 夏河县| 紫云| 荆州市| 龙泉市| 潮安县| 子长县| 淳化县| 宜黄县|