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 }
spring 關鍵性 代碼 Refresh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.