@JsonFilter,自定义和性能

时间:2012-03-20 06:57:06

标签: java json spring spring-mvc jackson

我正在开发一个REST API,它需要支持基于请求参数的可选的属性过滤(基于Spring MVC 3.0.x和Jackson)。

我正在考虑实现的是获取字符串参数(格式为" fieldName1,fieldName2 ..."),过滤掉不允许的属性名称,过滤掉不存在的属性名称并添加强制属性。

一旦我有了最后一个字符串,我想使用jackson @JSONFilter来仅对这些所需的属性进行seralize:

SimpleBeanPropertyFilter someFilter = 
    SimpleBeanPropertyFilter.filterOutAllExcept(builtString);
filterProvider = 
    new SimpleFilterProvider().addFilter("someGenericName",someFilter);
String pojoIntoJsonParse =
    objectMapper.writer(filterProvider).writeValueAsString(pojo);

我的问题是:

  1. 我是否必须使用ModelAndView机制(因为我在每个请求的基础上操作objectMapper)或者我是否可以以某种方式通知我所需的过滤器的弹簧并仍然让它完成繁重的工作?

  2. 这个解决方案是否可行,因为我认为我必须为每个请求重建filterProvider和过滤器。

  3. 杰克逊尝试针对过滤缓存执行哪些优化(如果有)?

  4. 对于上述问题,我是否应该尝试另类路径?

1 个答案:

答案 0 :(得分:1)

我不太了解Spring有关ModelAndView的部分知识,但我对Jackson的了解已经足够了解杰克逊过滤的表现不太可能有问题。 过滤方法简单易行的一个原因是因为它们试图平衡可用性和性能 - 因此,JSON视图和过滤器的开销都非常低。