SpringBoot对SpringMVC的支持

7.1.1. Spring MVC Auto-configuration

Spring Boot provides auto-configuration for Spring MVC that works well with most applications.

The auto-configuration adds the following features on top of Spring’s defaults:

  • Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.
  • Support for serving static resources, including support for WebJars (covered later in this document)).
  • Automatic registration of ConverterGenericConverter, and Formatter beans.
  • Support for HttpMessageConverters (covered later in this document).
  • Automatic registration of MessageCodesResolver (covered later in this document).
  • Static index.html support.
  • Custom Favicon support (covered later in this document).
  • Automatic use of a ConfigurableWebBindingInitializer bean (covered later in this document).

If you want to keep those Spring Boot MVC customizations and make more MVC customizations (interceptors, formatters, view controllers, and other features), you can add your own @Configuration class of type WebMvcConfigurer but without @EnableWebMvc.

If you want to provide custom instances of RequestMappingHandlerMappingRequestMappingHandlerAdapter, or ExceptionHandlerExceptionResolver, and still keep the Spring Boot MVC customizations, you can declare a bean of type WebMvcRegistrations and use it to provide custom instances of those components.

If you want to take complete control of Spring MVC, you can add your own @Configuration annotated with @EnableWebMvc, or alternatively add your own @Configuration-annotated DelegatingWebMvcConfiguration as described in the Javadoc of @EnableWebMvc.

  https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-spring-mvc  

  SpringBoot官方文档中,SpringBoot已经提供了SpringMVC大部分工作场景所需的自动配置,可以直接使用。

  默认配置有:  

      • ViewResolver 视图解析器,根据方法返回值得到视图对象(View),视图对象决定如何渲染(转发或者重定向 )。
      • ContentNegotiatingViewResolver:组合所有的视图解析器,该类会从BeanFactory中获取所有视图解析器并且组合。如果需要自己定制视图解析器,就可以向容器中添加视图解析器,最终会被组合进框架中。
      •  静态资源文件夹路径、wabjars
      • 静态首页访问
      • 图标
      • 自动注册Converter、Formatter。转换器和格式化器。在处理请求时转换器将页面提交的内容转换成对应类型。格式化器可以将 例如2020/1/30 -->Date类型。如果需要自己添加格式化转换器,只需要将自己写好的Bean添加进容器中即可。
      •  HttpMessageConverter:消息转换器,用于转换Http请求和响应;例如返回User对象, 如果想返回json格式返回,就需要转换器 User --> Json 如果要添加自己的HttpMessageConverter,也是将自己的组件注册到容器中就行了。默认已经配好了Json和xml类型的转换器。
      • MessageCodesResolver :定义错误代码生成规则
      • ConfigurableWebBindingInitializer :初始化WebDataBinder:可以将请求数据绑定到JavaBean中。 可以自己编写一个来替换默认的组件(添加自己的Bean到容器中)
      • 在org.springframework.boot.autoconfigure.web:中有自动配置有关的内容

修改SpringBoot的默认配置

  1、SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的组件(@Bean、@Component)如果有就用用户配置的,如果没有就自动配置;有些组件可以有多个,例如viewResolver,会将用户配置的和自己默认的组合起来

  2、在SpringBoot中会有非常多的xxxConfigurer进行扩展配置。

扩展SpringMVC

  编写一个配置类(@Configuration),实现WebMvcConfigurer接口进行扩展,不能标注@EnableWebMvc注解,重写接口提供的方法即可。可以既保留所有自动配置,也能用扩展的配置。

  例如添加视图映射:

  在启动时会将所有WebMvcConfiurer相关配置都调用一遍,最终容器中所有Configurer斗湖一起起作用。

  最终SpringMVC的自动配置和扩展配置都会起作用

完全接管SpringMVC

  如果要完全接管SpringMVC,就不需要自动配置了,所有内容都自己配。类似于SSM开发时使用SpringMVC。 只需要在配置类上添加@EnableWebMvc即可

原文地址:https://www.cnblogs.com/ELAIRS/p/12242357.html

时间: 2024-10-04 10:20:37

SpringBoot对SpringMVC的支持的相关文章

SpringBoot学习-SpringMVC自动配置

SpringBoot学习-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configuration Spring Boot provides auto-configuration for Spring MVC that works well with most applications. The auto-configuration adds the following features

SpringBoot, SpringMvc, SpringCloud

1,SpringBoot VS SpringMvc VS SpringBoot SpringBoot: SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架.SpringMVC是控制层. SpringCloud: SpringCloud依赖与SpringBoot组件,使用SpringMVC编写Http协议接口,同时SpringC

【转】【链接】SpringBoot配置SSL同时支持http和https访问

SpringBoot配置SSL同时支持http和https访问:https://blog.csdn.net/qq_38288606/article/details/89478353#comments 原文地址:https://www.cnblogs.com/xiaostudy/p/12358297.html

springboot+mybatis+springmvc整合实例

以往的ssm框架整合通常有两种形式,一种是xml形式,一种是注解形式,不管是xml还是注解,基本都会有一大堆xml标签配置,其中有很多重复性的.springboot带给我们的恰恰是"零配置","零配置"不等于什么也不配置,只是说相对于传统的ssm框架的xml配置或是注解配置,要少的多.作为常规的来说,一个ssm框架整合,拿maven来说,首先在src/main/resource下加入jdbc.properties,spring-mvc.xml,spring-myba

SpringBoot日记——SpringMvc自动配置与扩展篇

为了让SpringBoot保持对SpringMVC的全面支持和扩展,而且还要维持SpringBoot不写xml配置的优势,我们需要添加一些简单的配置类即可实现: 通常我们使用的最多的注解是: @Bean @Component 配置后的类就是我们要写在容器中的一些配置:详情后续再说,或者你也可以参考官方文档 关于扩展 这里我们说一下如何做扩展呢,先看一下原先在SpringMvc中我们是如何写的,来看XML(这是一段关于路径映射和拦截器的简单配置,访问hello路径也展示success.html的页

springboot+mybatis+springMVC基础框架搭建

项目结构概览 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

SpringBoot 中添加jsp支持遇到的问题

由于想把一个java web项目使用springBoot框架来联系一下,Java web项目用到了jsp,于是便需要在spring boot中引入jsp支持 引入方法网上很多,现在记录一下自己遇到的问题 我的controller中使用的注解是RestController,所以在返回页面的时候只能在页面显示字符串,如return "index"   结果输入对应url,页面就显示index   T_T 这个问题困扰好久,终于在网上找到了解决办法: 原来return "index

SpringBoot(二)-- 支持JSP

SpringBoot虽然支持JSP,但是官方不推荐使用.看网上说,毕竟JSP是淘汰的技术了,泪奔,刚接触 就淘汰.. SpringBoot集成JSP的方法: 1.配置application.properties # 页面默认前缀目录 spring.mvc.view.prefix=/WEB-INF/jsp/ # 响应页面默认后缀 spring.mvc.view.suffix=.jsp 2.加入依赖 <dependency> <groupId>org.apache.tomcat.emb

springboot: 使web项目支持jsp

1.springboot为什么不推荐使用jsp? 参考地址:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf 2.使用freemark模板引擎有何优势 参考地址:http://blog.csdn.net/qq897958555/article/details/53560655 3.代码实现 1).pom.xml <project xmlns="http://maven.apache.or