ジャージーは、実際には、明示的に順番にデフォルトのマッパーのインスタンスを使用していますJacksonJsonProvider
に、むしろそれデリゲートをObjectMapperインスタンスを設定しません。 the JacksonProviderProxy codeをたどって、その動作を確認できます。あなたはcontext resolverを定義することで、アプリケーション全体で使用する共有マッパーを作成し、カスタマイズすることができます。
@Provider
public class ObjectMapperContextResolver implements
ContextResolver<ObjectMapper> {
private ObjectMapper mapper = null;
public ObjectMapperContextResolver() {
super();
// Illustrate configuration of the mapper instance
mapper = new ObjectMapper().configure(
SerializationConfig.Feature.WRAP_ROOT_VALUE, true).configure(
DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return mapper;
}
}
ジャクソン・プロバイダーは、このリゾルバからそのマッパーのインスタンスを取得します、とあなたはそうと、あなたのコードで同じことを行うことができます:私は、次の静的メンバを追加することによりこれを解決
public class MyResource {
@Context
private ContextResolver<ObjectMapper> mapperResolver;
public void someResourceMethod() {
final ObjectMapper mapper = mapperResolver.getContext(Object.class);
}
}
あなただけがclient''から 'objectMapper'を抽出できるか' client'を、持っている場合は? – DerekY
@DerekY私はそれを行う方法がわかりません。 – necromancer