Spring RestTemplate と I18N を使用するときに単体テストを機能させようとしています。セットアップのすべてが、他のすべてのテスト ケースで正常に機能します。
私が読んだことに基づいて、これは私がJava Configに入れたものです:
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
return new LocaleChangeInterceptor();
}
@Bean
public DefaultAnnotationHandlerMapping handlerMapping() {
DefaultAnnotationHandlerMapping mapping = new DefaultAnnotationHandlerMapping();
Object[] interceptors = new Object[1];
interceptors[0] = new LocaleChangeInterceptor();
mapping.setInterceptors(interceptors);
return mapping;
}
@Bean
public AnnotationMethodHandlerAdapter handlerAdapter() {
return new AnnotationMethodHandlerAdapter();
}
次に、RestTemplate を使用した場合、次のようになります。
public MyEntity createMyEntity(MyEntity bean) {
Locale locale = LocaleContextHolder.getLocale();
String localeString = "";
if (locale != Locale.getDefault()) {
localeString = "?locale=" + locale.getLanguage();
}
HttpEntity<MyEntity> req = new HttpEntity<MyEntity>(bean);
ResponseEntity<MyEntity> response = restTemplate.exchange(restEndpoint + "/url_path" + localeString, HttpMethod.POST, req, MyEntity.class);
return response.getBody();
}
これは少しクリーンアップできますが、動作するはずですが、LocalChangeInterceptor が呼び出されることはありません。私は今これをデバッグしており、それを理解したらすぐに再度投稿します-しかし、これが私が失う競合状態であることを願っています-誰かが理由を知っていますか?