springboot的工作原理

承接springmvc的工作原理,这里探讨springboot是如何工作的,由springboot的启动类SpringbootdemoSimpleApplication.java开始,我们知道,如果想把springboot的项目打包放到tomcat里运行,需要将启动类继承SpringBootServletInitializer

public class SpringbootdemoSimpleApplication extends SpringBootServletInitializer{

因为SpringBootServletInitializer是继承WebApplicationInitializer的

public abstract class SpringBootServletInitializer implements WebApplicationInitializer {

在springmvc中,WebApplicationInitializer 就是启动类,原理是通过servlet的特性进行加载的,所以我们需要导入servlet的依赖包,并排除springboot内置的tomcat包

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

注解@SpringBootApplication是springboot启动的关键注解,该注解下有@EnableAutoConfiguration注解,开启自动配置,会把相关的配置类加载到spring容器中,而这些配置类的全类名,就在文件spring.factories下


11571589-cec8431672e26085.png
image.png

比如WebMvcAutoConfiguration就是springmvc的配置类,加载此配置类,就相当于普通的springmvc项目的springmvc-servlet.xml配置。

总结

本文以springmvc为引入点,说明一个普通的springboot项目整合过程,关于springboot的更加详细的原理剖析参考文章: springboot之启动原理解析及源码阅读

猜你喜欢

转载自blog.csdn.net/weixin_34212189/article/details/87521310