1. 定義
BeanFactoryPostProcessor, 翻譯過來大致是Bean的工廠處理器袭蝗,顧名思義,可以理解為它對Bean工廠中Bean定義(BeanDefintion)進行修改秃嗜, 它的執(zhí)行時機:BeanFactory標(biāo)準(zhǔn)初始化之后镣奋,所有的Bean定義已經(jīng)被加載,但標(biāo)準(zhǔn)Bean的實例還沒被創(chuàng)建(不包括BeanFactoryPostProcessor類型)梯皿。該方法通常用于修改bean的定義主儡,Bean的屬性值等奖唯,甚至可以在此快速初始化Bean。
延伸
PriorityOrdered 和Ordered接口
這兩個接口可以被實現(xiàn)用于控制執(zhí)行某件事情的優(yōu)先級糜值。PriorityOrdered繼承了Ordered接口丰捷。
在BeanFactoryPostProcessor的實現(xiàn)類中,可以分為三種實現(xiàn)類
一種是實現(xiàn)了PriorityOrdered的類寂汇,一種是實現(xiàn)了Ordered的類病往,一種是都沒有實現(xiàn)的類。
加載順序為PriorityOrdered -> Ordered -> 都沒實現(xiàn)骄瓣。
在Autowired注入的時候
其中實現(xiàn)PriorityOrderded的類會在最開始被加載停巷,這些類要謹(jǐn)慎使用Autowired注入其他bean,因為這些類被注冊時累贤,很可能AutowiredAnnoataionBeanPostProcessor還沒有被加載叠穆,要注入的bean加載不進來少漆。