天天看點

springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?

昨天在項目更新Spring Boot2.0的過程中,發現如下圖的情況

springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?
springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?
springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?

RequestMapping("/test")可以跟/test比對,但是比對任何不了帶字尾的請求。

我們知道Spring MVC是預設支援比對字尾的,如/test.json,/test.html,哪怕是/test.55都是可以比對。

鑒于Spring Boot2.0是比對Spring Framework 5.0的,我不确定是兩者誰做了控制,是以我仔細看了相關文檔和源碼。

一、Spring的源碼

我們都知道,請求的控制器是

org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport。我分别對比了4.1.3和5.0.4的控制此部分的源碼。

springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?
springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?

上面是4.1.3的源碼,下面是5.0.4的源碼,兩者基本一緻,可是在debug時的接口卻不一樣,suffixPatternMatch 一個是null,一個是false,那麼問題出在哪兒呢,我們來看下Spring Boot的文檔。

二、Spring Boot2.0文檔

springboot 請求路徑有字尾_Spring Boot學習(三)請求路徑如何比對字尾".*"?

這部分是Spring Boot對于請求路徑比對的說明,預設情況下&