Spring bean處理——回調函數
Spring中定義了三個可以用來對Spring bean或生成bean的BeanFactory進行處理的接口, InitializingBean、BeanPostProcessor和BeanFactoryPostProcessor。通過實作這三個接口我們就可以對Spring bean進行處理了。
InitializingBean中定義了一個afterPropertiesSet()方法。當BeanFactory将我們的bean執行個體化并且設定好了對應的屬性之後,如果我們的bean實作了InitializingBean接口,則會調用對應的afterPropertiesSet()方法。那麼我們就可以在這個方法體裡面對目前bean的屬性進行更改等其它操作。
BeanPostProcessor接口實作類可以在bean初始化前後對bean做一些處理。ApplicationContext可以自動檢測到其中的bean是否已實作了BeanPostProcessor接口,如果已經實作了該接口它會自動把它當做一個BeanPostProcessor進行處理。然後在需要調用BeanPostProcessor時進行調用。BeanPostPorcessor中定義了兩個方法,postProcessBeforeInitialization()和postProcessAfterInitialization()。
l postProcessBeforeInitialization(Object bean, String beanName)方法将在調用bean的初始化方法之前被調用。方法參數分别表示目前的bean對象和對應的bean名稱。
l postProcessAfterInitialization(Object bean, String beanName)方法将在調用bean的初始化方法之後被調用。
BeanPostProcessor是針對于容器中的所有的bean的。一旦容器中定義有BeanPostProcessor,那麼容器中的每一個bean在初始化前後都會調用BeanPostProcessor對應的方法。