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

news2024/11/27 18:51:53

一、概述

        作为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中禁止使用WebMvcConfigurationSupport!!!

2.4、@EnableWebMvc

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SecureCRT9汉化版安装详解

CRT中文版安装说明 一、安装步骤1. 安装注意&#xff1a;2. 右键压缩包&#xff0c;解压到本地文件夹内3. 解压后进入目录&#xff0c;双击CRT_SFX_91_Run_Script激活脚本 3 如果运行结果是下图&#xff0c;就激活成功了&#xff1a;4. 双击桌面的CRT和FX图标5. 如果提示下图&a…

Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介 core&#xff1a;核心模块&#xff0c;非图形的接口类&#xff0c;为其它模块提供支持 gui&#xff1a;图形用户接口&#xff0c;qt5之前 widgets&#xff1a;图形界面相关的类模块 qt5之后的 database&#xff1a;数据库模块 network&#xff1a;网络模块 QT 特性 开…

VisualStudio反汇编功能使用

VisualStudio反汇编功能使用 使用方法 到达断点时&#xff1a;CtrlK&#xff08;松开&#xff09;G&#xff08;后按&#xff09;唤出反汇编界面&#xff0c;就可以看到当前代码对应的汇编语言了 注意&#xff1a;进入反汇编窗口后可以F10单次调试一条汇编指令 其他&#…

3.添加与删除字段

添加字段与删除字段 1.添加字段 因为甲方的业务需求是不停变化的&#xff0c;所以在数据库操作中&#xff0c;添加字段可是常有的事。一个完整的字段包括&#xff1a;字段名、数据类型和完整性约束。 语法规则为&#xff1a; ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条…

SPECPOWER2008

一、前言# 1、软件说明# 官网&#xff1a;SERT套件用户指南2.0.5SPECpower介绍SPEC基准及工具SPECpower_ssj2008测试结果SPECpower_ssj2008-Design_ccs - SPEC# SPEC&#xff08;the Standard Performance Evaluation Corporation&#xff09;是一个由计算机硬件厂商、软件公…

JPA对数据库修改注意点

同一事务中获取不到修改数据 spring-boot-starter-parent版本2.7.12 Dao Query(value "select * from inventory_list where id in (?1) order by id desc",nativeQuery true) List<InventoryListEntity> getByIds(List<Integer> idList);Modifyin…

openharmony 开发环境搭建和系统应用编译傻瓜教程

一、DevEco Studio 安装 当前下载版本有两个&#xff0c;由于低版本配置会有各种问题&#xff0c;我选择高版本安装 低版本下载链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 高版本下载链接 OpenAtom OpenHarmony 解压后安装 双击安装 安装配置 二、创建测…

字符串指令集

字符串指令的格式 例子1就成功发送了指令 例子2就是发送的字符串有误 查询当前位置就会在附加信息中返回当前座位的坐标 第一个指令的参数就是闪灯的两个参数 如第一个示例就是10ms On Time 第二个就是Off Time 使用标准库来接收字符串命令 字符串指令的接收 因为一个指令就是…

vue实现可拖拽列表

直接上代码 <!-- vue实现可拖拽列表 --> <template><div><button click"logcolig">打印数据</button><TransitionGroup name"list" tag"div" class"container"><divclass"item"v-f…

『PyTorch学习笔记』如何快速下载huggingface模型/数据—全方法总结

如何快速下载huggingface模型/数据—全方法总结 文章目录 一. 如何快速下载huggingface大模型1.1. IDM(Windows)下载安装连接1.2. 推荐 huggingface 镜像站1.3. 管理huggingface_hub cache-system(缓存系统) 二. 参考文献 一. 如何快速下载huggingface大模型 推荐 huggingface…

0013Java程序设计-基于Vue的上课签到系统的设计与实现

文章目录 **摘 要**目录系统设计4.2学生签到4.3 签到信息列表4.4 用户信息管理5.1系统登录5.1.1 登录5.1.2 清除用户登记记录5.1.3 登录拦截 5.2用户管理5.2.2 用户添加5.2.3 用户编辑5.2.4 用户删除5.2.5 用户分页 5.3签到信息5.3.1签到信息列表 5.4学生签到5.4.1学生签到 开发…

智能运维相关算法总结

概念&#xff1a; 智能运维&#xff08;AIOps&#xff09;是基于已有的运维数据&#xff08;日志、监控信息 、应用信息&#xff09;并通过机器学习的方法来进一步解决自动化运维没办法解决的问题&#xff0c;其核心是机器学习和大数据平台。 目标&#xff1a; 事前预警&…

ssh免密登录gitee

文章目录 一、简介二、实现流程1. 生成公钥和私钥 2、在Gitee上创建仓库3、GoLand的连接Gitee4、上传 实现本机与Gitee码云之间的免密码登录&#xff0c;通过SSH协议&#xff0c;用于通过Git与远程仓库进行通信&#xff0c;将本地仓库推送到远程仓库 参考&#xff1a;gitee git…

043:vue项目一直出现 sockjs-node/info?t=XX的解决办法

第043个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍

大家好&#xff0c;我是蓝胖子&#xff0c;最近在做一些elasticsearch 慢查询优化的事情&#xff0c;通常用分析elasticsearch 慢查询的时候可以通过profile api 去分析&#xff0c;分析结果显示的底层lucene在搜索过程中使用到的函数调用。所以要想彻底弄懂elasticsearch慢查询…

[JSMSA_CTF] 2023年12月练习题 pwn

一开始没给附件&#xff0c;还以为是3个盲pwn结果&#xff0c;pwn了一晚上没出来&#xff0c;今天看已经有附件了。 pwn1 在init_0里使用mallopt(1,0) 设置global_max_fast0 任何块释放都会进入unsort在free函数里没有清理指针&#xff0c;有UAF将v6:0x100清0&#xff0c;便于…

ResNeXt(2017)

文章目录 Abstract1. Introductionformer workour work 2. Related Work多分支卷积网络分组卷积压缩卷积网络Ensembling 3. Method3.1. Template3.2. Revisiting Simple Neurons3.3. Aggregated Transformations3.4. Model Capacity 4. Experiment 原文地址 源代码 Abstract 我…

vuepress-----18、图片缩放

图片引入两种方式 地址 # 图片缩放插件 # 实战 md文件引入图片 <img class"zoom-custom-imgs" :src"$withBase(/favicon.ico)" alt"favicon">安装配置插件 vuepress/medium-zoom: {selector: img.zoom-custom-imgs,},效果展示

LVS-DR+Keepalived+动静分离实验

架构图 解释一下架构&#xff0c;大概就是用Keepalived实现两台DR服务器的LVS负载均衡&#xff0c;然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来&#xff0c;真的是拼起来&#xff0c;两个部分…

MVCC是什么

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…