当classpath上的Jackson 1 JAR时,强制Spring 3.1使用Jackson 2


问题内容

我有一个使用Maven构建的Spring MVC 3.1应用程序,我想使用Jackson
2进行JSON序列化/反序列化。我的pom.xml文件中明确包含Jackson 2.x依赖关系,尽管我的应用程序具有内部使用Jackson
1.9.9的不同依赖关系,而且我无法轻易删除该依赖关系。

由于类路径上同时存在两个Jackson库,因此Spring似乎默认使用Jackson 1.9.9版。

如何强制Spring MVC使用Jackson 2?


问题答案:

为了使此工作有效,我必须调整我的mvc:annotation驱动的xml配置元素,使其工作如下:

<mvc:annotation-driven>
  <mvc:message-converters register-defaults="false">
    <bean id="jacksonMessageConverter" 
      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
  </mvc:message-converters>
</mvc:annotation-driven>