gpt4 book ai didi

web-services - Spring、Jackson 和自定义(例如 CustomDeserializer)

转载 作者:IT老高 更新时间:2023-10-28 13:49:16 25 4
gpt4 key购买 nike

对Spring还有些陌生,遇到了一个problem这使得有必要为 jackson 实现我的自定义解串器。该过程在一个小的 tutorial 中进行了描述。 ,但是,我被 Spring 困住了。我不明白,在哪里

 ObjectMapper mapper = new ObjectMapper();

在 Spring MVC 中,json 是通过 Controller 类的方法反序列化时执行的。所以我不知道该怎么做才能用自定义反序列化器替换默认反序列化器。

欢迎提出任何建议。

最佳答案

你没有说你在 Spring 中是如何使用 Jackson 的,所以我假设你是通过 <mvc:annotation-driven/> 使用它的。和 @RequestBody和/或 @ResponseBody注释。

<mvc:annotation-driven/> 中的一件事做的是注册一个AnnotationMethodHandlerAdapter bean里面预配置了一些HttpMessageConverter bean 类,包括MappingJacksonHttpMessageConverter ,它处理与 Jackson 注释的模型类之间的编码。

现在 MappingJacksonHttpMessageConverter有一个 setObjectMapper()方法,它允许您覆盖默认 ObjectMapper .但是自从MappingJacksonHttpMessageConverter<mvc:annotation-driven/> 在幕后创建,你无法得到它。

但是,<mvc:annotation-driven/>只是一个方便的捷径。声明自己的 AnnotationMethodHandlerAdapter 也一样有效 bean ,注入(inject)你自己的MappingJacksonHttpMessageConverter bean(通过 messageConverters 属性),并注入(inject)您自己定制的 ObjectMapper进入那个。

然后你就会遇到如何构建自定义 ObjectMapper 的问题。 ,因为它不是一个对 Spring 非常友好的类。我建议写你的own simple implementation of FactoryBean .

所以你最终会得到这样的结果:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper">
<bean class="com.x.MyObjectMapperFactoryBean"/>
</property>
</bean>
</property>
</bean>

关于web-services - Spring、Jackson 和自定义(例如 CustomDeserializer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com