系列八、SpringBoot中自定义SpringMVC配置

一、概述

        作为Spring家族的明星产品,SpringBoot极大地简化了程序员的日常开发,提高了开发效率。我们很容易得借助于SpringBoot就可以快速开发业务代码。一般情况下,公司的日常开发都是基于web服务的,我们在使用idea等工具初始化一个springboot项目时,一般都会在pom.xml中加入 spring-boot-starter-web 依赖,引入了这个依赖后,springmvc相关的依赖就都引入进来并通过springboot的自动化配置给我们配置好了,如下:

        但是,真实的项目环境下,系统自带的配置不一定能满足我们的实际需求,这就需要我们结合实际业务进行自定义配置了。

二、SpringMVC配置相关的类

        WebMvcConfigurer(Interface)、WebMvcConfigurerAdapter(Class,新版本已废弃)、WebMvcConfigurationSupport(Class)、@EnableWebMvc(注解)

2.1、WebMvcConfigurerAdapter

        WebMvcConfigurerAdapter是springboot 1.x中定义的一个类,在1.x版本中,自定义springmvc的配置就可以通过继承WebMvcConfigurerAdapter实现的,这个抽象类本身实现了WebMvcConfigurer接口,2.x及以上版本已废弃,源码如下:

/*** An implementation of {@link WebMvcConfigurer} with empty methods allowing* subclasses to override only the methods they're interested in.** @author Rossen Stoyanchev* @since 3.1*/
public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {//...}

2.2、WebMvcConfigurer

        WebMvcConfigurer是一个接口,接口中的方法和 WebMvcConfigurerAdapter 中定义的空方法其实一样,所以用法上来说,基本上没有差别,从 Spring Boot 1.x 切换到 Spring Boot 2.x ,只需要把继承类改成实现即可,在springboot2.x及以上版本,如果我们有自定义SpringMVC的需求,可以通过实现 WebMvcConfigurer 接口来配置,源码如下:

/*** Defines callback methods to customize the Java-based configuration for* Spring MVC enabled via {@code @EnableWebMvc}.** <p>{@code @EnableWebMvc}-annotated configuration classes may implement* this interface to be called back and given a chance to customize the* default configuration.** @author Rossen Stoyanchev* @author Keith Donald* @author David Syer* @since 3.1*/
public interface WebMvcConfigurer {// ...}

 2.3、WebMvcConfigurationSupport

        WebMvcConfigurationSupport是一个类,一般用于ssm(spring+springmvc+mybatis)的项目中,自定义类通过继承WebMvcConfigurationSupport,可以在不写springmvc.xml配置的情况下,实现对mvc的配置,例如:

注意事项:

        WebMvcConfigurationSupport禁止在springboot中使用!因为在springboot中如果使用了WebMvcConfigurationSupport,将会导致SpringBoot中的MVC自动配置失效,SpringBoot中的mvc的自动化配置类是WebMvcAutoConfiguration,其源码如下:

        很明显的可以看到SpringBoot中WebMvcAutoConfiguration生效的前提是当前资源目录下无WebMvcConfigurationSupport,所以在springboot中禁止在springboot中使用!!!

2.4、@EnableWebMvc

        @EnableWebMvc是一个注解, 它的作用是启用WebMvcConfigurationSupport,通过2.3的源码分析,所以在springboot中也不建议使用,因为它也会导致SpringBoot的WebMvcAutoConfiguration失效,源码如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/255739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript如何实现按键音效、视频播放,标签分类切换横向滚动

1.使用HTML5的audio标签 &#xff08;音频播放&#xff09; <audio id"click-sound"><source src"audio/show.mp3" type"audio/mpeg"> </audio> <button id"button">按钮</button> var clickSound d…

Spring Boot的日志

打印日志 打印日志的步骤: • 在程序中得到日志对象. • 使用日志对象输出要打印的内容 在程序中得到日志对象 在程序中获取日志对象需要使用日志工厂LoggerFactory,代码如下: package com.example.demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public c…

Arrays类练习 - Java

案例&#xff1a;自定义Book类&#xff0c;里面包含name和price&#xff0c;按price排序(从大到小)。要求使用两种方式排序&#xff0c;有一个 Book[] books 4本书对象。 使用前面学习过的传递实现Comparator接口匿名内部类&#xff0c;也称为定制排序。可以按照price (1)从大到…

temu缺货订单号在哪里查

在拼多多的商家后台管理系统Temu中&#xff0c;查找缺货订单号是非常重要的。及时了解缺货订单的情况&#xff0c;可以帮助商家更好地处理订单&#xff0c;提供良好的客户服务。本文将介绍在Temu中如何查找缺货订单号&#xff0c;以及处理缺货订单的步骤和注意事项。 先给大家推…

春风十里不如你——掌握Spring Boot的常用关键注解

引言 在Java的世界里&#xff0c;Spring Boot以其简化的配置和开箱即用的特性&#xff0c;成为了构建现代微服务和企业级应用的首选框架。Spring Boot的注解是这一切的核心。在本文中&#xff0c;我们将深入探讨最常用的Spring Boot注解&#xff0c;帮助你轻松驾驭Spring Boot…

Ubuntu宝塔面板本地部署Emlog个人博客网站并远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

微前端介绍

目录 微前端概念 微前端特性 场景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 无界微前端 方案 无界方案 成本低 速度快 原生隔离 功能强大 总结 前言&#xff1a;微前端已经是一个非常成熟的领域了&#xff0c;但开发者不管采用哪个现…

【技术分享】利用双网口透传网关实现三菱FX3U PLC远程程序上下载监控

准备工作 一台可联网操作的电脑一台双网口的远程透传网关及博达远程透传配置工具网线两条&#xff0c;用于实现网络连接及连接PLC一台三菱 FX3U PLC及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡&#xff0c;WIFI联网则将WIFI天线插入USB口&#xff09; …

如何通过内网穿透实现无公网IP也能远程访问内网的宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

YOLOv5结合BiFPN,如何替换YOLOv5的Neck实现更强的检测能力?

一、BiFPN是什么&#xff1f; 1、什么是BiFPN BiFPN是一种基于特征金字塔网络&#xff08;FPN&#xff09;和双向特征金字塔网络&#xff08;BiFPN&#xff09;的对象检测神经网络结构&#xff0c;它被用于提高目标检测的准确度和速度。在目标检测领域&#xff0c;FPN用于将不同…

9. 使用Pthreads实现线程池(一)

背景 多线程的一个典型应用场景就是服务器的并发处理,如下图所示,多名用户向服务器发出数据操作的请求。为了提高并发性,我们可以在每收到一个用户请求时就创建一个线程处理相关操作。这种操作在请求数量较少时没有什么问题,但在请求数量很多时你会发现线程的创建和销毁所占…

单月创作15个10w+作品,内容创作迎来新浪潮

据11月16日腾讯发布的Q3财报显示&#xff0c;本季度视频号总播放量同比增长超过50%&#xff0c;原创内容播放量增长强劲&#xff0c;视频号作为微信生态内最具增长潜力的产品之一&#xff0c;已然成为腾讯营收新动力。 为帮助大家更好地洞察视频号平台的内容趋势及创作风向&…