如何在SpringMVC(非SpringBoot)应用程序中定制Jackson
SpringMVC4.3.29和Java8(当前的平台约束),以及大部分XML配置,除了一些注释扫描的控制器类 简言之,我希望获得Spring JSON反序列化自动使用的如何在SpringMVC(非SpringBoot)应用程序中定制Jackson,spring,spring-mvc,jackson,jackson-databind,Spring,Spring Mvc,Jackson,Jackson Databind,SpringMVC4.3.29和Java8(当前的平台约束),以及大部分XML配置,除了一些注释扫描的控制器类 简言之,我希望获得Spring JSON反序列化自动使用的ObjectMapper实例,并将其FAIL\u ON\u UNKNOWN\u属性设置回true 我明白了,但所有的示例似乎都是和/或Java配置。建议的@Autowiredbean(映射器、生成器等)在我的WebSphere环境中都没有任何值 希望我只是缺少一些简单的胶水 编辑:呸,我以为我有这个: @配置 公共类Custom
ObjectMapper
实例,并将其FAIL\u ON\u UNKNOWN\u属性
设置回true
我明白了,但所有的示例似乎都是和/或Java配置。建议的@Autowired
bean(映射器、生成器等)在我的WebSphere环境中都没有任何值
希望我只是缺少一些简单的胶水
编辑:呸,我以为我有这个:
@配置
公共类CustomWebConfiguration扩展了WebMVCConfigureAdapter{
@凌驾
public void extendMessageConverters(列表转换器:转换器){
if(映射Jackson2HttpMessageConverter的转换器实例){
((MappingJackson2HttpMessageConverter)转换器).getObjectMapper()。
启用(反序列化功能。在未知属性上失败);
打破
}
}
}
}
使用我的调试器,我可以看到它正在被命中并更改预期标志。但使用时,该行为无效。我不再有任何XML覆盖,但我仍然有“主控”
。我想知道它们是否相互混淆了…这种“工作原理”,但完全替换了Spring的ObjectMapper
,它会丢失它所拥有的任何其他自定义项,我真的不想这样做
发件人:
然后我可以
@Autowired
注入这些对象并处理它们,但在这种情况下,我不需要这样做,因为只有一个新的默认Jackson对象映射器
实际上恢复了我想要的行为。好的,是的,只要它与@EnableWebMvc
而不是结合使用,它就可以工作:
@EnableWebMvc
@配置
公共类CustomWebConfiguration扩展了WebMVCConfigureAdapter{
@凌驾
public void extendMessageConverters(列表转换器:转换器){
if(映射Jackson2HttpMessageConverter的转换器实例){
((MappingJackson2HttpMessageConverter)转换器).getObjectMapper()。
启用(反序列化功能。在未知属性上失败);
打破
}
}
}
}
<bean id="myObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="myObjectMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>