Spring的Bean的生命週期: markdown
- Bean的BeanDefiniton在解析,由Annotation或者XML、Properties加載,解析並轉化爲BeanDefiniton.
- 將BeanDefiniton註冊到BeanFactory的容器.而後經過BeanFactoyPostProcess,能夠Bean的BeanDefinition的修改.
- 接下來就是對Bean的實例化的前置處理、實例化、後置處理,而後是Aware回調,便是ApplicationContextAwareProcessor的處理,主要EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware、ApplicationContextAware的接口的回調.
- Bean的初始化,便是調用BeanPostProcessor的postProcessBeforeInitialization的方法.
- 調用populateBean進行屬性填充.
- 進行Aware接口的回調,主要是BeanNameAware、BeanClassLoaderAware、 BeanFactoryAware的回調.
- 調用BeanPostProcess postProcessBeforeInitialization方法.
- 調用InitializingBean的afterPropertiesSet方法.
- 執行自定義的init-method方法.
- 調用BeanPostProcess postProcessBeforeInitialization方法,返回 BeanWrapper對象.
- 銷燬bean的銷燬前置處理.
- 銷燬bean.
- 銷燬bean的後置處理.
總結 今天主要對Spring的bean的生命週期的各個流程的梳理,後續, 會對各個流程的 源碼的分析.app