Bean的生命周期:
1,實例化bean
2,設置javaBean的屬性值
3,若該bean實現了BeanNameAware接口,則調用該接口的setBeanName()方法
4,若該bean實現了BeanFactoryAware接口,則調用該接口的setBeanFactory()方法
5, 若sping為所有javaBean配置了后處理器,即實現了BeanPostPorcessor接口的java類,並在配置文件中注冊為bean
調用BeanPostProcessor接口的postProcessBeforeInitialization()方法
6,若bean實現了InitializingBean接口,則調用該接口的afterPropertiesSet()方法
7, 調用bean中自己定制的初始化方法:配置文件中配置init-method, 7和8的初始化方法是平級的,可共存,效果一樣,一般選其一即可
8,調用BeanPostPorcessor接口的postProcessAfterInitialization()方法
容器銷毀后,調用bean中定制的銷毀方法
9,若該bean實現了DisposableBean接口,調用其destroy()方法,
10,配置文件中指定自定義的銷毀方法:destroy-method , 9和10是兩種不同的銷毀方式,是平級的,可共存,效果一樣,一般選其一即可
圖解: