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

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.
主站蜘蛛池模板: 台东市| 东至县| 盐源县| 临海市| 莒南县| 辽阳市| 杭锦后旗| 客服| 呼图壁县| 敦化市| 梅河口市| 和静县| 屏东县| 弋阳县| 资源县| 玉田县| 东方市| 梓潼县| 盖州市| 江门市| 墨竹工卡县| 明光市| 延安市| 广平县| 兴和县| 永康市| 湛江市| 东台市| 哈尔滨市| 漾濞| 宝坻区| 登封市| 醴陵市| 广汉市| 广河县| 郓城县| 耿马| 资中县| 怀远县| 潍坊市| 阳春市|