Java @JsonFilter、定制和性能

Java @JsonFilter、定制和性能,java,json,spring,spring-mvc,jackson,Java,Json,Spring,Spring Mvc,Jackson,我正在开发一个RESTAPI,它需要支持基于请求参数的可选属性过滤(基于SpringMVC3.0.x和Jackson) 我要实现的是获取一个字符串参数(格式为“fieldName1,fieldName2…”),过滤掉不允许的属性名,过滤掉不存在的属性名,并添加强制属性 一旦我有了最后一个字符串,我想使用jackson@JSONFilter只对所需的属性进行序列化,如下所示: SimpleBeanPropertyFilter someFilter = SimpleBeanProperty

我正在开发一个RESTAPI,它需要支持基于请求参数的可选属性过滤(基于SpringMVC3.0.x和Jackson)

我要实现的是获取一个字符串参数(格式为“fieldName1,fieldName2…”),过滤掉不允许的属性名,过滤掉不存在的属性名,并添加强制属性

一旦我有了最后一个字符串,我想使用jackson@JSONFilter只对所需的属性进行序列化,如下所示:

SimpleBeanPropertyFilter someFilter = 
    SimpleBeanPropertyFilter.filterOutAllExcept(builtString);
filterProvider = 
    new SimpleFilterProvider().addFilter("someGenericName",someFilter);
String pojoIntoJsonParse =
    objectMapper.writer(filterProvider).writeValueAsString(pojo);
我的问题是:

  • 我是否必须使用ModelAndView机制(因为我是根据每个请求操作objectMapper),或者我是否可以以某种方式通知spring我所需的过滤器,并且仍然让它完成繁重的工作

  • 这个解决方案在性能方面是否可行,因为我认为我必须为每个请求重建filterProvider和筛选器

  • jackson试图对过滤器缓存执行哪些优化(如果有)

  • 对于上述问题,我是否应该尝试寻找其他途径


  • 我对Spring的了解还不足以了解ModelAndView部分,但我对Jackson的了解已经足够多,可以说性能对Jackson过滤来说不太可能有问题。 过滤方法之所以不那么简单,一个原因是它们试图平衡可用性和性能——因此,JSON视图和过滤器的开销都非常低