1. 程式人生 > >spring中bean生命週期

spring中bean生命週期

我們都知道servlet的生命週期是:例項化、初始化、接受處理請求、銷燬。 spring上下文中bean也是類似的: 我們的bean都是交給spring管理的,也就是我們將bean的建立、管理控制權都交給了spring容器也稱為IOC容器 當然IOC容器初始化時是空的,將什麼例項交給IOC也是由我們自己控制的。 再說說bean的生命週期,如下: 1、例項化一個bean,也就是我們常說的new; 2、按照spring上下文對例項化bean進行配置,也就是IOC注入; 3、如果這個bean已經實現了BeanNameFactoryAware介面,會呼叫他實現setBeanName方法,這裡傳遞的就是spring配置檔案中的bean的id值,也會呼叫它實現的setBeanFactory傳遞的是spring工廠自身; 4、如果這個bean已經實現了ApplicationContextAware介面,會呼叫setApplicationContext方法傳入spring上下文; 5、如果bea關聯了BeanPostProcessor,將會呼叫postProcessBeforeInitialization方法,BeanPostProcessor經常被用作是bean內容的更改,並且由於這個是在bean初始化結束時呼叫那個的方法,也可以被應用於記憶體或快取技術; 6、如果這個bean在spring配置檔案中配置了init-method屬性會自動呼叫起配置的初始化方法; 7、如果這個bean關聯了BeanPostProcessor介面,將會呼叫postProcessAfterInitialization方法; 以上工作完成後就可以應用這個bean了,這個bean一定是singleton的,所以一般情況下我們呼叫同一個id的Bean會是在內容地址相同的例項,當然在Spring配置檔案中也可以配置非Singleton 8、當bean不在需要時,會經過清理階段,如果bean實現了DisposableBean這個介面,會呼叫實現的的destory()方法; 9、最後如果這個bean的spring配置中配置了destory-method屬性,會自動呼叫其配置的銷燬方法。