能夠選擇以下一些擴展點:spring
▌1.BeanFactoryPostProcessor
是beanFactory後置處理器,支持在bean factory標準初始化完成後,對bean factory進行一些額外處理。在講context初始化流程時介紹過,這時全部的bean的描述信息已經加載完畢,可是尚未進行bean初始化。例如前面提到的PropertyPlaceholderConfigurer,就是在這個擴展點上對bean屬性中的佔位符進行替換。代理
▌2.BeanDefinitionRegistryPostProcessor對象
它擴展自BeanFactoryPostProcessor,在執行BeanFactoryPostProcessor的功能前,提供了能夠添加bean definition的能力,容許在初始化通常bean前,註冊額外的bean。例如能夠在這裏根據bean的scope建立一個新的代理bean。接口
▌3.BeanPostProcessor事件
提供了在bean初始化以前和以後插入自定義邏輯的能力。與BeanFactoryPostProcessor的區別是處理的對象不一樣,BeanFactoryPostProcessor是對beanfactory進行處理,BeanPostProcessor是對bean進行處理。it
注:上面這三個擴展點,能夠經過實現Ordered和PriorityOrdered接口來指定執行順序。實現PriorityOrdered接口的processor會先於實現Ordered接口的執行。io
▌4.ApplicationContextAware擴展
能夠得到ApplicationContext及其中的bean,當須要在代碼中動態獲取bean時,能夠經過實現這個接口來實現。List
▌5.InitializingBeansso
能夠在bean初始化完成,全部屬性設置完成後執行特定邏輯,例如對自動裝配對屬性進行驗證等等。
▌6.DisposableBean
用於在bean被銷燬前執行特定的邏輯,例如作一些回收工做等。
▌7.ApplicationListener
用來監聽spring的標準應用事件或者自定義事件。