上一篇:模擬SpringBoot編寫一個嵌套Tomcat的工具類(方便調試)工具
在進入真正的分析SpringMVC接收並響應請求以前看看二者在啓動的時候會有哪些不一樣,相信對後面的分析也會有很多幫忙,看看兩個啓動類的類圖,在類圖中標註了一些不一樣的地方.net
左側是Spring啓動類AnnotationConfigApplicationContext,右側是SpringMVC啓動類AnnotationConfigWebApplicationContext調試
SpringMVC類層次結構可要深好多,總的來講差別並不大,只不過一些相同的功能在不一樣地方實現的,而且新增了一部分WEB應用的組件blog
1.Spring是在實例化AnnotationConfigApplicationContext的時候就完成了reader和scanner的實例化,SpringMVC是在refresh()-refreshBeanFactory()時才完成的get
2.Spring是調用AnnotationConfigApplicationContext.register方法完成配置類的分析與註冊,SpringMVC是在refresh()-refreshBeanFactory()時才完成的servlet
3.SpringMVC啓動以後BeanPostProcessor多了ServletContextAwareProcessorit
4.SpringMVC啓動以後,singletonObjects中多了contextParametersio
5.SpringMVC啓動以後,environment.propertySources中多了servletContextInitParams和servletConfigInitParams兩個PropertySourcetable
總結:區別並不大,只不過加了Servlet相關的組件到容器中,DefaultListableBeanFactory和reader\scanner工做方式仍是保持不變的。容器