image.png
- Spring 容器根據(jù)實(shí)例化策略對(duì) Bean 進(jìn)行實(shí)例化钮莲。
- 實(shí)例化完成后免钻,如果該 bean 設(shè)置了一些屬性的話,則利用 set 方法設(shè)置一些屬性崔拥。
- 如果該 Bean 實(shí)現(xiàn)了 BeanNameAware 接口极舔,則調(diào)用 setBeanName() 方法。
- 如果該 bean 實(shí)現(xiàn)了 BeanClassLoaderAware 接口链瓦,則調(diào)用 setBeanClassLoader() 方法拆魏。
- 如果該 bean 實(shí)現(xiàn)了 BeanFactoryAware接口,則調(diào)用 setBeanFactory() 方法。
- 如果該容器注冊(cè)了 BeanPostProcessor渤刃,則會(huì)調(diào)用postProcessBeforeInitialization() 方法完成 bean 前置處理
- 如果該 bean 實(shí)現(xiàn)了 InitializingBean 接口拥峦,則調(diào)用 。afterPropertiesSet() 方法溪掀。
- 如果該 bean 配置了 init-method 方法事镣,則調(diào)用 init-method 指定的方法步鉴。
- 初始化完成后揪胃,如果該容器注冊(cè)了 BeanPostProcessor 則會(huì)調(diào)用 postProcessAfterInitialization() 方法完成 bean 的后置處理。
- 對(duì)象完成初始化氛琢,開(kāi)始方法調(diào)用喊递。
- 在容器進(jìn)行關(guān)閉之前,如果該 bean 實(shí)現(xiàn)了 DisposableBean 接口阳似,則調(diào)用 destroy() 方法骚勘。
- 在容器進(jìn)行關(guān)閉之前,如果該 bean 配置了 destroy-mehod撮奏,則調(diào)用其指定的方法俏讹。
- 到這里一個(gè) bean 也就完成了它的一生。