Spring Bean 的加載順序


一,單一Bean

  • 裝載

1. 實例化; 
2. 設置屬性值; 
3. 如果實現了BeanNameAware接口,調用setBeanName設置Bean的ID或者Name; 
4. 如果實現BeanFactoryAware接口,調用setBeanFactory 設置BeanFactory; 
5. 如果實現ApplicationContextAware,調用setApplicationContext設置ApplicationContext 
6. 調用BeanPostProcessor的預先初始化方法; 
7. 調用InitializingBean的afterPropertiesSet()方法; 
8. 調用定制init-method方法; 
9. 調用BeanPostProcessor的后初始化方法;

  • spring容器關閉

1. 調用DisposableBean的destroy(); 
2. 調用定制的destroy-method方法;

二,多個Bean的先后順序

  • 優先加載BeanPostProcessor的實現Bean
  • 按Bean文件和Bean的定義順序按bean的裝載順序(即使加載多個spring文件時存在id覆蓋)
  • “設置屬性值”(第2步)時,遇到ref,則在“實例化”(第1步)之后先加載ref的id對應的bean
  • AbstractFactoryBean的子類,在第6步之后,會調用createInstance方法,之后會調用getObjectType方法
  • BeanFactoryUtils類也會改變Bean的加載順序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM