InitialingBean和DisposableBean
InitialingBean 接口 擴展 afterPropertiesSet()
DisposableBean 接口 擴展 destory()
前者顧名思義在Bean屬性都設置完畢後調用afterPropertiesSet()方法做一些初始化的工作,後者在Bean生命週期結束前調用destory()方法做一些收尾工作。
BeanNameAware、ApplicationContextAware和BeanFactoryAware
1、實現BeanNameAware接口的Bean,在Bean加載的過程中可以獲取到該Bean的id
2、實現ApplicationContextAware接口的Bean,在Bean加載的過程中可以獲取到Spring的ApplicationContext,這個尤其重要,ApplicationContext是Spring應用上下文,從ApplicationContext中可以獲取包括任意的Bean在內的大量Spring容器內容和信息
3、實現BeanFactoryAware接口的Bean,在Bean加載的過程中可以獲取到加載該Bean的BeanFactory
FactoryBean
BeanPostProcessor
BeanPostProcess接口有兩個方法,都可以見名知意:
1、postProcessBeforeInitialization:在初始化Bean之前
2、postProcessAfterInitialization:在初始化Bean之後
這兩個方法是有返回值的,不要返回null,否則getBean的時候拿不到對象。
BeanFactoryPostProcessor
InstantiationAwareBeanPostProcessor
通常來講,我們不會直接實現InstantiationAwareBeanPostProcessor接口,而是會採用繼承InstantiationAwareBeanPostProcessorAdapter這個抽象類
總流程: