Spring系列(八):Spring生命周期中BeanPostProcessor接口用法介紹
今天給大家介紹BeanPostProcessor接口用法,希望對(duì)大家能有所幫助!? ? ? ?? ? ??
1、BeanPostProcessor 概念介紹
BeanPostProcessor接口通常被稱為Bean的后置處理器,它是Spring中定義的接口,可以在Spring容器的創(chuàng)建過(guò)程中(主要在Bean初始化前后進(jìn)行工作)回調(diào)BeanPostProcessor中定義的兩個(gè)方法。
2、BeanPostProcessor接口方法
postProcessBeforeInitialization:在每一個(gè)bean對(duì)象的初始化方法調(diào)用之前回調(diào)。
postProcessAfterInitialization:在每個(gè)bean對(duì)象的初始化方法調(diào)用之后被回調(diào)。
說(shuō)明:以上兩個(gè)方法的返回值都不能為null,否則在后續(xù)的初始化方法會(huì)報(bào)空指針或者通過(guò)getBean()方法無(wú)法獲取Bean對(duì)象。主要原因是如果返回值為null的情況下以上兩個(gè)方法從Spring容器獲取bean實(shí)例,沒(méi)有再次放入Spring容器中去,這樣容器中就沒(méi)有了。
2.1 BeanPostProcessor源碼內(nèi)容
3、BeanPostProcessor 接口的作用
可以Spring容器中完成bean實(shí)例化、配置以及其他初始化方法前后根據(jù)業(yè)務(wù)的場(chǎng)景增加相應(yīng)的邏輯處理。典型的案例AOP的實(shí)現(xiàn)。
4、代碼示例
4.1 新建Person.java 類文件
4.2、新建MyBeanPostProcessor.java
4.3、新建TestBeanPostProcessorConfig.java 配置類
4.4、新建測(cè)試類 TestBeanPostProcessor.java
輸出結(jié)果:
postProcessBeforeInitialization執(zhí)行了testBeanPostProcessorConfig
postProcessAfterInitializationtestBeanPostProcessorConfig
UserInfo構(gòu)造器執(zhí)行了
postProcessBeforeInitialization執(zhí)行了userInfo
PostConstruct 初始化方法執(zhí)行
postProcessAfterInitializationuserInfo
Process finished with exit code 0