怎么在Spring Boot項目中定制一個攔截器?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
為桐城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及桐城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都做網(wǎng)站、桐城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
添加攔截器不僅是在WebConfiguration中定義bean,Spring Boot提供了基礎(chǔ)類WebMvcConfigurerAdapter,我們項目中的WebConfiguration類需要繼承這個類。
繼承WebMvcConfigurerAdapter;
為LocaleChangeInterceptor添加@Bean定義,這僅僅是定義了一個interceptor spring bean,但是Spring boot不會自動將它加入到調(diào)用鏈中。
攔截器需要手動加入調(diào)用鏈。
修改后完整的WebConfiguration代碼如下:
package com.test.bookpub; import org.apache.catalina.filters.RemoteIpFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; @Configuration public class WebConfiguration extends WebMvcConfigurerAdapter { @Bean public RemoteIpFilter remoteIpFilter() { return new RemoteIpFilter(); } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { return new LocaleChangeInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry { registry.addInterceptor(localeChangeInterceptor()); } }
使用mvn spring-boot:run
運行程序,然后通過httpie訪問http://localhost:8080/books?locale=foo
,在終端看到如下錯誤信息。
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy] with root cause
關(guān)于怎么在Spring Boot項目中定制一個攔截器問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。