Jersey は、実際には ObjectMapper インスタンスを明示的に構成するのではなく、代わりにJacksonJsonProvider
デフォルトのマッパー インスタンスを使用する に委譲します。JacksonProviderProxy コードをトレースして、その動作を確認できます。コンテキスト リゾルバーを定義することで、アプリケーション全体で使用される共有マッパーを作成およびカスタマイズできます。
@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;
}
}
Jackson プロバイダーは、このリゾルバーからマッパー インスタンスを取得します。次のように、コードで同じことを行うことができます。
public class MyResource {
@Context
private ContextResolver<ObjectMapper> mapperResolver;
public void someResourceMethod() {
final ObjectMapper mapper = mapperResolver.getContext(Object.class);
}
}