spring 關鍵性 代碼 Refresh

1      public void refresh() throws BeansException, IllegalStateException {  
2        synchronized (this.startupShutdownMonitor) {  
3            //清空.class文件緩存,設置啓動刷新時間,同時至標誌位active true,closed false,初始化servlet屬性源,驗證必須存在的屬性,初始化一個早期的事件收集器  
4            prepareRefresh();  
5            //告訴子類啓動refreshBeanFactory()方法,Bean定義資源文件的載入從  
6           //子類的refreshBeanFactory()方法啓動  
7            ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();  
8            //爲BeanFactory配置容器特性,例如類加載器、事件處理器等  
9            prepareBeanFactory(beanFactory);  
10            try {  
11                //爲容器的某些子類指定特殊的BeanPost事件處理器  
12                postProcessBeanFactory(beanFactory);  
13                //調用所有註冊的BeanFactoryPostProcessor的Bean  
14                invokeBeanFactoryPostProcessors(beanFactory);  
15                //爲BeanFactory註冊BeanPost事件處理器.  
16                //BeanPostProcessor是Bean後置處理器,用於監聽容器觸發的事件  
17                registerBeanPostProcessors(beanFactory);  
18                //初始化信息源,和國際化相關.  
19                initMessageSource();  
20                //初始化容器事件傳播器.  
21                initApplicationEventMulticaster();  
22                //調用子類的某些特殊Bean初始化方法  
23                onRefresh();  
24                //爲事件傳播器註冊事件監聽器.  
25                registerListeners();  
26                //初始化所有剩餘的單態Bean.  
27                finishBeanFactoryInitialization(beanFactory);  
28                //初始化容器的生命週期事件處理器,併發布容器的生命週期事件  
29                finishRefresh();  
30            }  
31            catch (BeansException ex) {  
32                //銷燬以創建的單態Bean  
33                destroyBeans();  
34                //取消refresh操作,重置容器的同步標識.  
35                cancelRefresh(ex);  
36                throw ex;  
37            }  
38        }  
39    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章