SpringBoot、Spring MVC工作原理和区别简述

1.SpringBoot工作原理:

    SpringBoot的一个关键注解是@SpringBootApplication,在这个注解中有三个重要注解:
    @Configuration -- 就是Spring IOC容器的配置类,被Configuration注解的java类称为

                                 JavaConfig配置类,它可以与@Bean配合使用,在这个类中的方法

                                 上使用@Bean注解,返回值将作为一个bean定义注册到Spring的IOC容器
    @ComponentScan  --相当于Spring xml配置中的,可以
                                       自动扫描并加载符合条件的组件,最终这些bean定义加载到IOC容器
    @EnableAutoConfiguration -- 借助@Import注解,引入AutoConfigurationImportSelector类,

                                                    该类调用SpringFactoriesLoder加载所有spring.factories文件,

                                                    将所有符合自动配置条件的bean定义注册到IOC容器

2.Spring MVC工作原理

      Spring MVC是依靠前端控制器DispatherServlet的调度在工作,DispatherServlet的继承关系如下图:

       SpringBoot、Spring MVC工作原理和区别简述_第1张图片

           DispatcherServlet继承了FrameworkServlet,FrameworkServlet继承了HttpServletBean,

           HttpServletBean继承了HttpServlet,HttpServlet的service方法会根据请求类型不同调用

           doGet、doPost等方法,而这些方法是在HttpServletBean中实现的,HttpServletBean的

           这些方法又调用了processRequest方法,processRequest方法调用了doService,而

           doService是在DispatherServlet类中实现的,doService方法调用了doDispatch方法。

                     在doDispatch方法中体现了DispatherServlet的工作流程:

                    1.通过HandlerMapping得到处理器执行链HandlerExecutionChain对象,

                       HandlerExecutionChain对象包含了处理器对象(Handler)和拦截器对象;

                   2.在调用HandlerAdapter生成ModelAndView之前,执行拦截器的preHandle方法,

                     如果返回false,直接返回,HandlerExecutionChain中的处理器对象不会执行,

                     返回true继续执行;

                   3.doDispatch调用处理器适配器HandlerAdapter返回ModelAndView,接着执行

                      拦截器的postHandle方法(如果配置了拦截器,可以在该方法中对ModelAndView

                      进行操作);

                   4.通过render方法调用视图解析器ViewResolver返回视图对象View,然后调用View

                     的render方法将model数据渲染到视图;

                  5.在渲染完view之后,返回视图到客户端显示之前,执行拦截器的afterCompletion方法;

                  6.返回视图呈现用户

3.Spring Boot与Spring MVC的区别

      1.Spring Boot是Spring和Spring MVC的整合,而Spring MVC只是Spring的一个模块,一个轻量级的Web层框架

      2.Spring Boot几乎可以实现零配置,所有功能使用注解进行开发,运用了'约定大于配置'的思想,简化了项目开发

         难度,而Spring MVC需要依赖于xml配置进行开发

     3.Spring Boot提供了内置的tomcat,可以打成jar包直接运行,也可以使用外置tomcat

     4.Spring Boot还继承了许多第三方库配置,例如,JDBC, Mongo, Redis等,应用这些第三方库,几乎可以零配置

   

你可能感兴趣的:(Spring)