官术网_书友最值得收藏!

How to do it...

Despite what you might think, after seeing the previous recipe, adding an interceptor is not as straightforward as just declaring it as a bean. We actually need to do it via WebMvcConfigurer or by overriding WebMvcConfigurationSupport. Let's take a look at the following steps:

  1. Let's enhance our WebConfiguration class to implement WebMvcConfigurer:
public class WebConfiguration implements WebMvcConfigurer {...} 
  1. Now we will add a @Bean declaration for LocaleChangeInterceptor:
@Bean 
public LocaleChangeInterceptor localeChangeInterceptor() { 
  return new LocaleChangeInterceptor(); 
} 
  1. This will actually create the interceptor Spring bean, but will not add it to the request handling chain. For this to happen, we will need to override the addInterceptors method and add our interceptor to the provided registry:
@Override 
public void addInterceptors(InterceptorRegistry registry) { 
  registry.addInterceptor(localeChangeInterceptor()); 
} 
  1. Start the application by running ./gradlew clean bootRun
  2. In the browser, go to http://localhost:8080/books?locale=foo
  3. Now, if you look at the console logs, you will see a bunch of stack trace errors basically saying the following:
Caused by: java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy
While the error is not because we entered an invalid locale, but because the default locale resolution strategy does not allow the resetting of the locale that is requested by the browser, the fact that we got an error shows that our interceptor is working.
主站蜘蛛池模板: 杂多县| 西吉县| 揭东县| 渝中区| 惠州市| 贺兰县| 古交市| 依兰县| 肇东市| 县级市| 昌宁县| 江津市| 孝昌县| 伊川县| 增城市| 长顺县| 吐鲁番市| 大城县| 玉田县| 文水县| 兴山县| 建阳市| 瓦房店市| 博乐市| 新龙县| 高淳县| 安远县| 家居| 汽车| 犍为县| 柘荣县| 景泰县| 盐亭县| 河津市| 鹰潭市| 广南县| 东丰县| 淮滨县| 正镶白旗| 东莞市| 北流市|