javascript
SpringBoot拦截器不生效
?????? 今天新開了服務(wù),需要用到攔截器,好久沒看spring的東西了,好多東西都忘了。。。這個(gè)項(xiàng)目框架是另一個(gè)同事搭建的,我需要?jiǎng)?chuàng)建一個(gè)攔擊器處理鑒權(quán)問題,但是不好使然后具體查了下原因。
在網(wǎng)上找了下,大致有這么幾種情況:
??? 缺少注解:@Component或者@Configuration注解
??? 啟動(dòng)類沒有掃描到:@ComponentScan沒掃描到
??? 路徑配置錯(cuò)了:addPathPatterns(“/**”);//?? /**代表所有目錄;/*代表當(dāng)前目錄
然并軟,我沒有上面的問題。。。搞了好幾個(gè)小時(shí)跟著源碼發(fā)現(xiàn)另一個(gè)攔截器竟然起作用了!!!看了下另一個(gè)Config攔截器繼承了WebMvcConfigurationSupport
springboot只會(huì)生效一個(gè)配置類,于是我將兩個(gè)Config配置類合成一個(gè),然后可以啦!
值得注意的是,我將WebConfig里的WebMvcConfigurationSupport改成WebMvcConfigurer或者WebMvcConfigurerAdapter也是不行的。
所以說,項(xiàng)目中不能有兩個(gè)以上的類繼承自這三個(gè)類。在重寫addInterceptors后注意你的代碼里面有沒有其他地方繼承或?qū)崿F(xiàn)了WebMvcConfigurationSupport、WebMvcConfigurerAdapter、WebMvcConfigurer。
一定要統(tǒng)一,不能是有的類繼承這個(gè),有的類繼承那個(gè)!!!
繼承WebMvcConfigurerAdapter或?qū)崿F(xiàn)WebMvcConfigurer,功能差不多,可以在Application類中繼承或?qū)崿F(xiàn),也可以在其他的地方。重寫的方法都會(huì)執(zhí)行。
繼承WebMvcConfigurationSupport,若多個(gè)類繼承該類,只會(huì)有一個(gè)類中的重寫的方法執(zhí)行!!!
優(yōu)先級(jí):與Application平級(jí)>其他路徑下的類,優(yōu)先級(jí)高的類執(zhí)行后,其他類不會(huì)執(zhí)行。注意,不能在Application類中繼承,即使繼承了,重寫的方法也不會(huì)生效。
總結(jié)
以上是生活随笔為你收集整理的SpringBoot拦截器不生效的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux常用端口查询命令及常见端口和端
- 下一篇: Java代码注释规约