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