vagabond1-1983 / blog

My tech blog for achieve
GNU General Public License v2.0
2 stars 0 forks source link

[Spring]spring启动component-scan类扫描加载过程 #45

Open vagabond1-1983 opened 8 years ago

vagabond1-1983 commented 8 years ago
Refer: http://www.it165.net/pro/html/201406/15205.html DispatcherServlet->FrameworkServlet->HttpServletBean.init() initServletBean()<--- / initWebApplicationContext() / createWebApplicationContext() / configureAndRefreshWebApplicationContext()
                AbstractApplicationContext.refresh()
                                            |/
                                    obtainFreshBeanFactory()
                                            |/
                AbstractRefreshableApplicationContext.refreshBeanFactory()
                                                        |/
                        XmlWebApplicationContext.loadBeanDefinitions()
                                                    ....
                                                    |/
                        DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions()
                                                                |/
                                                            parseBeanDefinitions()  

image

大体跟了下源码,不太深入,第一次看。大体感觉是跟applicationContext相关,在初始化beanFactory的过程中,通过解析xml配置文件,一步步的丰富beanFactory。在doScan和doRegister过程中,会碰到componentScan的动作,由自定义的handler实现扫描,context、mvc等等的handler。在加载类时,通过扫描class文件进行反射加载。所以整体bean加载顺序还是跟xml写入顺序相关。