【发布时间】:2020-02-08 11:16:01
【问题描述】:
我正在使用杰克逊 2.9.6。我有一个控制器,我试图在其中发送一个 Optional 作为我的字段之一。当我收到来自控制器的响应时,我总是以{"field":{"present":true}} 的格式得到它(如question 所示)。
基本上我有一个这样配置的 RestTemplate bean:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
我想将 Jdk8Module 添加为序列化过程的一部分。我注意到有一个 MappingJackson2HttpMessageConverter(ObjectMapper mapper) 构造函数接受一个 ObjectMapper,我正在考虑创建一个 ObjectMapper bean,它将 Jdk8Module 注册到它(使用在 ObjectMapper 类中找到的一个名为 registerModule(Module module) 的公共方法)所以我可以像这样传递该模块:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<constructor-arg name="objectMapper" ref="ObjectMapperWithJDK8Bean"></constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="ObjectMapperWithJDK8Bean" class="com.fasterxml.jackson.databind.ObjectMapper">
* Pass in com.fasterxml.jackson.datatype.jdk8.Jdk8Module here via the method *
</bean>
但我目前面临的问题是在创建 bean 时如何从 xml 文件中调用 registModule 方法?我正在使用 Spring 4.1。我是 Spring 新手,所以这非常具有挑战性!
【问题讨论】:
-
根据this,jdk8模块在类路径中找到时应该自动注册。
-
但它说这是从 4.2 开始添加的...我目前正在使用 4.1:/ 我现在无法真正升级到 4.2
-
对不起,没看到你的代码这么古老;(
-
这是您维护的旧版应用程序吗?
-
@chrylis 很不幸