我想自定义ObjectMapper for RESTEasy以动态隐藏POJO中的某些字段。我扩展了JacksonProvider并覆盖了writeTo方法。我得到了ObjectMapper的引用并添加了mixins注释。每次我向服务器发送REST API调用时,都会调用writeTo方法,并根据某些条件设置mixins注释。但它只是第一次反映出来。如果我修改mixin注释,它在后续调用中根本不会反映出来。看起来像RESTEasy克隆并在某处缓存ObjectMapper。如何解决这个问题?同样的事情我也要做Xml。
@Provider
public class MyJacksonJsonProvider extends JacksonJsonProvider
{
@Override
public void writeTo(Object value, Class<?> type, Type genericType, Annotation[] annotations,
MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
throws IOException
{
ObjectMapper mapper = locateMapper(type, mediaType);
mapper.setMixinAnnotations(someDynamicmixinAnnotations);
super.writeTo(value, type, genericType, annotations, mediaType, httpHeaders, entityStream);
}
}
此致 Abdun