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

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

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

一、BeanPostProcessor接口

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

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

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

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

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

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

二、案例

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

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

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

    //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類,實現(xiàn)BeanPostProcessor接口,并重寫預初始化方法postProcessBeforeInitialization()和后初始化方法postProcessAfterInitialization()

/**
 * Spring Bean后置處理器
 */
public class PostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(beanName+"正在執(zhí)行預初始化方法");
        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>
<!-- 注冊后置處理器 -->
<bean id="postProcessor" class="com.bighorn.config.PostProcessor"/>

編寫運行程序

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

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

三、總結

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

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

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

相關文章

  • Java中MapStruct入門使用及對比

    Java中MapStruct入門使用及對比

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

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

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

    java swing實現(xiàn)簡單計算器界面

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

    解決MyBatis返回結果類型為Boolean的問題

    這篇文章主要介紹了解決MyBatis返回結果類型為Boolean的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java中使用map排序的實例講解

    java中使用map排序的實例講解

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

    Java Unsafe 類的講解

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

    mybatis中的異常BindingException詳解

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

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

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

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

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

    Bean?Searcher配合SpringBoot的使用詳解

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

最新評論

合水县| 渝中区| 昂仁县| 浦城县| 台州市| 南川市| 锡林郭勒盟| 桦南县| 四平市| 盈江县| 徐汇区| 驻马店市| 游戏| 石狮市| 江油市| 腾冲县| 鄂托克前旗| 临西县| 思茅市| 田阳县| 巫山县| 开江县| 武冈市| 凤凰县| 鲁山县| 孝昌县| 芦溪县| 于都县| 高邑县| 新营市| 淮滨县| 饶阳县| 东莞市| 远安县| 禹城市| 高清| 汉川市| 临朐县| 石家庄市| 永昌县| 余姚市|