Spring MVC / Jackson:完成后重置objectMapper

时间:2017-02-18 22:47:24

标签: spring spring-mvc jackson

假设我有两个资源并且都返回JSON。对于request1,我想使用jackson mixin来准备返回的JSOn。对于request2,我不想使用任何mixins。

问题:如何在request1之后重置mixins?对象映射器是一个spring bean / singleton。

代码:

@ResponseBody
public Something getSomething1(..) {
  ..
  objectMapper.addMixIn(Something.class, MyMixin.class);
  return obj;
}

@ResponseBody
public Something getSomething2(..) {
  ..
  return obj;
}

当然我可以在开始时取消getSomething2()和所有其他方法中的mixins,但我宁愿在getSomething1的completition之后完成它。因此,修改objectMapper的方法应该撤消其更改。

编辑: 正如JBNizet所提到的,这不是线程安全的。有没有人知道如何在一种方法中使用jackson mixins更好的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用ObjectMapper.copy()创建一个与原始配置相同的新| meanVal | sum(Val) | time (s) | |----------|----------|----------| | 40 | 1e6 | 0.36 | | 4000 | 1e8 | 7.72 | | 20000 | 5e8 | 35.09 | 。然后将自定义MixIns添加到新的ObjectMapper实例中。