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

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.
主站蜘蛛池模板: 从江县| 宿州市| 宁陕县| 内丘县| 怀集县| 威远县| 晋城| 宝丰县| 洛隆县| 三河市| 丰都县| 兴隆县| 蒙城县| 鄂州市| 龙川县| 桑日县| 马山县| 梓潼县| 秦安县| 肃宁县| 确山县| 黄冈市| 和平区| 乐东| 民乐县| 广东省| 巴东县| 盐城市| 武强县| 灵山县| 凤台县| 张家口市| 甘德县| 句容市| 苗栗县| 迁西县| 桂阳县| 高尔夫| 明溪县| 中西区| 孝昌县|