Spring MVC&Spring Boot

文章目录

  • Spring MVC
    • 什么是MVC模式
    • Spring MVC优点
    • SpringMVC 运行流程
    • SpringMVC组件
    • SpringMVC常用的注解有哪些
    • SpringMVC的拦截器和过滤器有什么区别?执行顺序是什么
  • SpringBoot
    • 对SpringBoot的理解
    • Spring和SpringBoot的关系?
    • SpringBoot有哪些核心注解
    • SpringBoot的自动配置原理
    • 为什么SpringBoot的可以直接运行

Spring MVC

Spring MVC :是基于spring的一个开源框架,实际上是spring的一个模块,专门用来做web开发的。可以理解为Servlet的一个升级。所有的web开发底层都是Servlet,框架是在Servlet基础上简化开发并且加入一些功能。

web开发底层是Servlet,springMVC中有一个对象时Servlet:DispatherServlet(中央调度器),负责接收用户的所有请求,用户把请求给了DispatherServlet,之后DispatherServlet把请求转发给我们的Controller(@Controller创建的对象)对象,最后是Controller对象处理请求。

什么是MVC模式

M——Model模型:完成业务逻辑,由JavaBean构成,service + dao+entity

V——view视图:看到的页面

C——Controller控制器:接收请求、调用模型

当一个请求发送过来之后,会先到到Controller控制层,控制层在交给Model模型层处理,Model层处理完成之后,返回处理结果给Controller层,在通过View视图层渲染后相应给用户。

Spring MVC优点

  1. 基于MVC结构。分工明确,解耦合
  2. 容易理解,上手快,使用简单
  3. 作为spring框架的一部分,方便整合Mybatis等其他框架。
  4. SpringMVC强化注解的使用。

SpringMVC 运行流程

Spring MVC&Spring Boot_第1张图片

  1. 前端发送过来的请求,先经过DispatcherServlet中央处理器也称为前端控制器。

  2. 前端控制器DispatcherServlet接收请求后,调用映射处理器HandlerMapping。

    HandlerMapping根据请求的URL找到处理该请求的Handler(即Controller),将处理器Handler返回给前端控制器。

  3. 前端控制器根据获取到的Handler,选择一台合适的HandlerAdapter处理适配器,处理适配器调用处理器相应的处理方法。

  4. Handler执行后,向DispatcherServlet返回一个ModelAndView对象。

  5. 对返回的ModelAndView进行视图解析,将View返回给DispatcherServlet。

  6. View结合Model进行视图渲染。

  7. 响应给客户。

SpringMVC组件

  • DispatcherServlet:Spring中提供了DispatcherServlet类,它从HTTPServlet继承而来,他就是Spring MVC中的前端控制器。
  • HandlerMapping:DispatcherServlet自己并不处理请求,而是将请求交给页面控制器。那么在DispatcherServlet中如何选择正确的页面控制器呢?这件事就交给了HandlerMapping,进过HandlerMapping处理之后,DispatcherServlet就知道要调用哪个页面处理器来处理了。
  • HandlerAdapter:经过了HandlerMapping 处理之后,DispatcherServlet就获取到了处理器,但是处理器有多种,为了方便调用,DispatcherServlet将这些处理器包装成处理适配器HandlerAdapter,HandlerAdapter调用真正的处理器的功能处理方法,完成处理功能,并返回一个ModelAndView对象。

SpringMVC常用的注解有哪些

@RequestMapping:用于映射web请求,包括访问路径和参数

@RestController:该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着该Controller的所有方法都默认加了@ResponseBody。

@ResponseBody:支持将返回值放到response内,而不是一个页面,通常用户返回json数据。

@RequestBody:允许request的参数在request体内,而不是在直接连接的地址后面。

SpringMVC的拦截器和过滤器有什么区别?执行顺序是什么

过滤器是Servlet规范规定的对所有的web请求起作用,而拦截器只对action起作用;

过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器;

过滤器不能访问容器中的Bean(DI)(基于Spring注册过的过滤器也可以访问容器中的Bean),而拦截器可以访问

执行顺序:

Spring MVC&Spring Boot_第2张图片

SpringBoot

对SpringBoot的理解

SpringBoot是用来快速开发spring应用的脚手架,其设计目的是用来简化spring应用的初始化搭建以及开发工程。

springBoot内置web服务器,省略了Web.xml,直接运行jar文件就可以启动web应用;

SpringBoot帮我们管理了常用的第三方依赖版本,减少了版本冲突问题;

提供自动配置,对主流框架无配置集成,开箱即用。

Spring和SpringBoot的关系?

SpringBoot是Spring生态产品;

SpringBoot他不是一个框架,它是一个可以快速构件基于spring的脚手架,二者不是一个层面的东西,没有可比性。

SpringBoot有哪些核心注解

@SpringBootApplication注解:这个注解标识了SpringBoot工程,写在启动类上

@SpringBootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类

@EnableAutoConfiguration:启动自动配置类的。自动扫描所有的自动配置类并启动

SpringBoot的自动配置原理

  1. 通过@SpringBootConfiguration引入@EnableAutoConfiguration负责启动自动配功能
  2. @EnableAutoConfiguration引入了@import
  3. Spring容易启动时:加载IOC容器时会解析@Import注解
  4. @Import导入了一个deferredImportSelector,它会使SpringBoot的自动配置类的顺序在最后,这样方便扩展和覆盖
  5. 然后读取所有的/META-INF/spring.factories文件
  6. 过滤出所有AutoConfigurationClass类型的类
  7. 最后通过@Condition排除无效的自动配置类。

为什么SpringBoot的可以直接运行

  1. SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包称为一个可执行的jar包;
  2. SpringBoot应用打包后生成一个Fat jar(包含jar包的jar),包含了应用依赖的jar和SpringBoot loader相关的类;
  3. 通过指令java - jar运行jar时会去找jar中的manifest文件,在那里面找到真正的启动类(Main-Class);
  4. Fat jar的启动Main函数是JarLauncher,找到manifest中的Start-Class

你可能感兴趣的:(spring,mvc,java)