當前位置:
首頁 > 知識 > javaWeb框架Spring Boot API 版本許可權控制

javaWeb框架Spring Boot API 版本許可權控制


Spring Boot API 版本許可權控制

之前有文章講述在Spring MVC 中擴展 RequestMappingHandlerMapping 實現對版本的控制。

但是在真正使用過程中不是很理想化,因為其需要替換掉WebMvcConfigurationSupport,替換後後,會將其提供的一系列默認組件全部移除。如我們註冊攔截器使用的(RequestMappingHandlerAdapter)、全局異常攔截(ExceptionHandlerExceptionResolver)等。

本文以Spring Boot 為例,解決這個問題。

Spring Boot RequestMappingHandlerMapping

自動配置時序圖

javaWeb框架Spring Boot API 版本許可權控制

由上圖則可以清晰看到,關鍵點在於是否存在WebMvcRegistrations。

進入WebMvcRegistrations發現其介面下提供了WebMvcRegistrationsAdapter轉換器,可以輕鬆擴展我們所需的RequestMappingHandlerMapping,實現版本控制。

自動配置RequestMappingHandlerMapping源碼分析

判斷是否存在WebMvcConfigurationSupport

javaWeb框架Spring Boot API 版本許可權控制

Spring Boot 首先載入WebMvcAutoConfiguration

上圖可以看到使用註解ConditionalOnMissingBean判斷是否存在WebMvcConfigurationSupport,如果不存在,則該類不會注入,故如果我們直接繼承WebMvcConfigurationSupport,則會導致整個全部配置失效。

* ps: SpringBoot的自動配置原理基本都是基於此類註解。*

引入WebMvc配置

javaWeb框架Spring Boot API 版本許可權控制

上圖可看到通過@Import註解引入了EnableWebMvcConfiguration,點擊進入該類可看到存在的構造方法中引入了WebMvcRegistrations。該類為WebMvcAutoConfiguration的內部類

javaWeb框架Spring Boot API 版本許可權控制

如何注入RequestMappingHandlerMapping

javaWeb框架Spring Boot API 版本許可權控制

由上圖可發現EnableWebMvcConfiguration類中注入了RequestMappingHandlerMapping。其調用父類requestMappingHandlerMapping

方法生成RequestMappingHandlerMapping。跟蹤父類可發現:

javaWeb框架Spring Boot API 版本許可權控制

調用方法,創建了RequestMappingHandlerMapping,跟下去:

javaWeb框架Spring Boot API 版本許可權控制

發現其有子類,點擊左側箭頭查看:

javaWeb框架Spring Boot API 版本許可權控制

發現回到了WebMvcAutoConfiguration中的EnableWebMvcConfiguration類。

其通過判斷mvcRegistrations是否存在以及mvcRegistrations是否擴展RequestMappingHandlerMapping 來選擇使用默認還是我們自定義的RequestMappingHandlerMapping 。

如何擴展

javaWeb框架Spring Boot API 版本許可權控制

創建一個類,繼承WebMvcRegistrationsAdapter,重寫getRequestMappingHandlerMapping,返回自定義RequestMappingHandlerMapping即可。

其類是WebMvcRegistrations方便對外擴展提供的轉換器類,可以點進去看一下,默認全部返回null。

附上版本控制全部代碼

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 青峰科技 的精彩文章:

簡潔的Java8-java8新特性詳解 編程語言
Linux內核頁面換入換出
C++實現稀疏矩陣的壓縮存儲
Linux系統CPU的性能監控及調優

TAG:青峰科技 |

您可能感興趣

新版本Google Play拋棄對Android Ice Cream Sandwich支持
The Shoe Surgeon 打造 Air Jordan 3「JTH」全新「Black Cement」定製版本
IBM Cloud Private for Data 最新發布 Cloud Native 版本
Virgil Abloh 確認 Nike Blazer Studio Mid「The Ten」將推出黑色版本
#Xsneaker新聞#Air Jordan 1「Shattered Backboard」或將推出限量 Satin 版本
Jeff Staple 曝光 Nike Dunk SB「Black Pigeon」高筒版本
新版本 Nike Air Presto「The Ten」諜照曝光,設計師使用 Supreme 單品打造沙發 | HB Daily
Converse Chuck Taylor All Star Hi 推出全新 GORE-TEX 版本
Virgil Abloh x Nike Air Presto「The Ten」2.0 版本實物諜照曝光
Virgil Abloh x Nike Air VaporMax「The Ten」全新黑色版本
Hot Toys 最新《Avengers: Infinity War》版本 Doctor Strange 珍藏人偶登場
BiYong ios版本已上線海外版Apple Store
Sean Wotherspoon又聯名了!粉色版本Virgil Abloh x NikeLab?
The Remade 打造 Vans Sk8-Hi「Revenge X Storm & Off-White」客製版本
Oracle應用管理云:IMCS添加不同版本Weblogic entity的區別
Hot Toys 推出《Avengers: Age of Ultron》升級版本 Hulkbuster 珍藏人偶
Facebook Lite 正在測試 iOS 版本
近賞 Nike Air Max 97「Metallic Gold」之 Swarovski 水晶定製版本
藝術家 Daniel Jacob 打造 Air Jordan 1「Chicago」水晶定製版本
iOSbeta7中,beta版本才有的APP Feedback消失了