系列八、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中禁止使用WebMvcConfigurationSupport!!!

2.4、@EnableWebMvc

????????@EnableWebMvc是一個注解,?它的作用是啟用WebMvcConfigurationSupport,通過2.3的源碼分析,所以在springboot中也不建議使用,因為它也會導致SpringBoot的WebMvcAutoConfiguration失效,源碼如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208104.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208104.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208104.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix補充

Zabbix的自動發現機制&#xff1a; Zabbix客戶端主動和服務端聯系&#xff0c;將自己的地址和端口發送服務端&#xff0c;來實現自動添加主機 客戶端是自動的一方 缺點&#xff1a;自定義的網段的主機數量太多&#xff0c;登記耗時會很久&#xff0c;而且這個自動發現機制不是…

P1075 [NOIP2012 普及組] 質因數分解題解

題目 已知正整數 n 是兩個不同的質數的乘積&#xff0c;試求出兩者中較大的那個質數 輸入輸出格式 輸入格式 輸入一個正整數n 輸出格式 輸出一個正整數p&#xff0c;即較大的那個質數 輸入輸出樣例 輸入 21 輸出 7 代碼 //對于一個質因數&#xff0c;從小到大開始…

Ubuntu 22.04源碼安裝yasm 1.3.0

sudo lsb_release -r看到操作系統的版本是22.04&#xff0c;sudo uname -r可以看到內核版本是5.15.0-86-generic&#xff0c;sudo gcc --version可以看到版本是11.2.0&#xff0c;sudo make --version可以看到版本是GNU Make 4.3。 下載yasm http://yasm.tortall.net/Downlo…

扁平的MutableList元素每隔若干元素一組裝入新MutableList,Kotlin

扁平的MutableList元素每隔若干元素一組裝入新MutableList&#xff0c;Kotlin fun main(args: Array<String>) {val array arrayOf("a", "b", "c", "d", "e", "f", "g", "h", "i…

左值、右值 、左值引用、右值引用的總結

文章目錄 什么是左值什么是右值純右值&#xff1a;將亡值&#xff1a; 左值引用右值引用 在C語言中我們常常會提起左值(lvalue) 和 右值(rvalue) 這樣的稱呼。編譯器在編譯程序報錯時&#xff0c; 有時也會報出錯誤信息中會包含左值、右值的說法。但是左值和右值并沒有一個嚴謹…

Numpy數組的重塑,轉置與切片 (第6講)

Numpy數組的重塑,轉置與切片 (第6講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ?????????????????????????????????????????????????????????????????????????????????…

String 和 StringBuffer和 StringBuilder 場景應用

目錄 1.三者區分2.String 不可變性的示例代碼&#xff1a;3.String 頻繁創建對象4.StringBuffer 是可變的&#xff0c;可以進行增刪改操作而不產生新的對象。5.StringBuffer 是線程安全的&#xff0c;適合在多線程環境下使用&#xff0c;但同步會帶來一定的性能損耗。 代碼舉例…

聚類分析 | Matlab實現基于譜聚類(Spectral Cluster)的數據聚類可視化

聚類分析 | Matlab實現基于譜聚類(Spectral Cluster)的數據聚類可視化 目錄 聚類分析 | Matlab實現基于譜聚類(Spectral Cluster)的數據聚類可視化效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 1.Matlab實現基于譜聚類(Spectral Cluster)的聚類算法可視化&#xff08;完…

融云 Global IM UIKit

GlobalIM UIKit 基于多年領先的行業經驗&#xff0c;我們為開發者提供功能完備的單群聊 通信能力。“分鐘級”接入&#xff0c;即可得到符合海外用戶使用習慣的多端同步產品。 核心功能包括&#xff1a;快速接入、功能齊全、全球化交互體驗、內容審核、靈活可配置、高度自定義、…

c++詳解棧

一.什么是棧 堆棧又名棧&#xff08;stack&#xff09;&#xff0c;它是一種運算受限的數據結構&#xff08;線性表&#xff09;&#xff0c;只不過他和數組不同&#xff0c;數組我們可以想象成一個裝巧克力的盒子&#xff0c;你想拿一塊巧克力&#xff0c;不需要改變其他巧克…

基于AWS Serverless的Glue服務進行ETL(提取、轉換和加載)數據分析(二)——數據清洗、轉換

2 數據清洗、轉換 此實驗使用S3作為數據源 ETL: E extract 輸入 T transform 轉換 L load 輸出 大綱 2 數據清洗、轉換2.1 架構圖2.2 數據清洗2.3 編輯腳本2.3.1 連接數據源&#xff08;s3&#xff09;2.3.2. 數據結構轉換2.3.2 數據結構拆分…

FFmpeg開發筆記(六)如何訪問Github下載FFmpeg源碼

學習FFmpeg的時候&#xff0c;經常要到GitHub下載各種開源代碼&#xff0c;比如FFmpeg的源碼頁面位于https://github.com/FFmpeg/FFmpeg。然而國內訪問GitHub很不穩定&#xff0c;經常打不開該網站&#xff0c;比如在命令行執行下面的ping命令。 ping github.com 上面的ping結…

初識Linux:權限(1)

目錄 提示&#xff1a;以下指令均在Xshell 7 中進行 Linux 的權限 內核&#xff1a; 查看操作系統版本 查看cpu信息 查看內存信息 外部程序&#xff1a; 用戶&#xff1a; 普通用戶變為超級用戶&#xff1a; su 和 su-的區別&#xff1a; root用戶變成普通用戶&#…

KALI LINUX信息收集

預計更新 第一章 入門 1.1 什么是Kali Linux&#xff1f; 1.2 安裝Kali Linux 1.3 Kali Linux桌面環境介紹 1.4 基本命令和工具 第二章 信息收集 1.1 網絡掃描 1.2 端口掃描 1.3 漏洞掃描 1.4 社交工程學 第三章 攻擊和滲透測試 1.1 密碼破解 1.2 暴力破解 1.3 漏洞利用 1.4 …

什么是SSL證書?

當我們網上購物或銀行業務時&#xff0c;為了安全起見&#xff0c;我們希望看到網站的地址欄上有“HTTPS”和安全鎖圖標。但是這個“HTTPS”和鎖定圖標實際上意味著什么&#xff1f;要回答這些問題&#xff0c;我們需要了解 HTTPS、SSL 協議和 SSL 證書。 關于HTTPS、SSL和SSL…

風控反欺詐安全學習路標

1. 金融和支付領域知識 - 了解金融和支付領域的基本概念、業務流程和風險特點。 - 學習金融機構的監管要求和合規措施&#xff0c;如KYC&#xff08;了解你的客戶&#xff09;和AML&#xff08;反洗錢&#xff09;。 2. 數據分析和挖掘技術 - 學習數據分析和數據挖掘的基本原理…

fastadmin獲取關聯表數據select渲染

php public function piliangadd(){if (false === $this->request->isPost()) {$fenlei_list = Db::name(fenlei)->order(weigh desc)->select();$this</

每天五分鐘計算機視覺:稠密連接網絡(DenseNet)

本文重點 在前面的課程中我們學習了殘差網絡ResNet,而DenseNet可以看成是ResNet的后續,我們看一下圖就可以看出二者的主要區別了。 特點 DenseNet是一種卷積神經網絡,它的特點是每一層都直接連接到所有后續層。這意味著,每一層都接收來自前一層的輸出,并將其作為輸入傳遞…

Flyway——Oracle創建前綴索引

文章目錄 前言創建一般索引的語法前綴索引 前言 索引有助于提升數據庫表的查詢速率&#xff0c;極大的縮減查詢的時間。但索引的創建需要考慮的因素很多&#xff0c;并非索引越多越好&#xff01; 創建一般索引的語法 oracle創建一般的常見索引&#xff0c;語法如下所示&…

n個人排成一圈,數數123離隊

#include<stdio.h> int main() { int i, n100,k0,j0,a[1000]{0};//k&#xff1a;數數123的變量&#xff0c;j記錄離開隊列人數的變量scanf("%d",&n);for(int ii0; ii<n; ii){ for( i0; i<n; i){// printf("wei%d ",i);if((a[i]0)&&…