SpringBoot 和 SpringMvc 的路径匹配问题
SpringMvc
访问/test
和/test.**
时会使用/test
接口SpringBoot
访问/test
和/test.**
时,只有/test
会使用/test
接口
原因:
1、观察RequestMappingHandlerMapping
的源码,可以看到SpringMVC
底层默认会开启/test
或/test.**
访问
/test
接口的规则。
这里的useSuffixPatternMatch
默认会置为 true
所以当访问/test
或/test.**
时会调用/test
接口。
2、观察SpringBoot
的RequestMappingHandlerMapping
的源码,可以发现SpringBoot
的认证规则和 SpringMVC
一致。但SpringBoot
的 EnableWebMvcConfiguration
的configurePathMatch
方法修改了 useSuffixPattern
的默认值。
点击 isUseSuffixPattern
方法,会返回一个默认的 useSuffixPattern
。
点击这个 useSuffixPattern
,会看到它的值为 false
,即SpringBoot
关闭了SpringMVC
默认的匹配规则