之前面试工作一直有人问SpringBoot和SpringMvc有啥关系?其实我一直觉得SpringBoot就是把SprigMvc配置成了自动配置。了解过嵌入式的同学应该对bootloader这个名词不陌生,bootloader其实就是一个引导程序,就是负责机器启动时能正确的引导机器进入系统。所以在我看来SpringBoot其实也就是一个引导,负责引导程序正常的加载SpirngMvc。下面我就拿代码分析一下SpringBoot如何引导的SpringMvc。
1.新建一个SpringMvc的工程
springmvc只依赖spring-boot,spring-boot-autoconfigure,spring-webmvc,tomcat-embed-core,tomcat-embed-websockete这几个依赖就可以运行起来
启动后
通过查看spring-boot-autoconfigure中的spring.factories发现有一句org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,
再看DispatcherServletAutoConfiguration的源码,发现一个dispatcherServlet方法,dispatcherServlet就是将DispatcherServlet注入到容器中。然而DispatcherServlet这个就是我们在SpringMvc项目中web.xml配置servlet-class类。
关于SpringBoot自动配置的实现可以参考我之前的博客。
本文的代码:git@gitee.com:xinlicn/spring-boot-auto-test.git