如何从 FeignClient 端点返回 LocalDateTime?
Posted
技术标签:
【中文标题】如何从 FeignClient 端点返回 LocalDateTime?【英文标题】:How to return LocalDateTime from FeignClient endpoint? 【发布时间】:2020-06-11 06:33:44 【问题描述】:这是我的 FeignClient:
@FeignClient(name="$mongo.service.id", url="$mongo.service.url", configuration = FeignConfig.class)
public interface MongoAtmResetDataInterface
String requestMappingPrefix = "/api/atmResetData";
@GetMapping(path = requestMappingPrefix + "/brinksDateTime")
LocalDateTime fetchLastBrinksDateTime();
这是对 feign 端点的调用:
private String fetchLastBrinksTime()
return mongoAtmResetDataInterface.fetchLastBrinksDateTime()
.toLocalDate()
.format(DateTimeFormatter.ofPattern(DATE_FORMAT));
我得到以下异常:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist):
no String-argument constructor/factory method to deserialize from String value ('10-12-2019T14:01:39')
我的 SpringMvcConfig 类中有一个 LocalDateTime 转换器,我的 FeignConfig 类中有一个合同。 谁能帮忙——我错过了什么?
【问题讨论】:
这能回答你的问题吗? JSON parse error: Can not construct instance of java.time.LocalDate: no String-argument constructor/factory method to deserialize from String value 我已经在我的 MvcConfigurer 中保存了转换器,很遗憾没有回答:( 【参考方案1】:使用反序列化的 Spring MVC 将生成一个数组。但是 Feign 用 ArrayList 调用对象方法。所以你不能反序列化 LocalDate。
所以你可以在 pom.xml 中添加这个设置
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
并将其添加到反序列化模型。 (com.fasterxml.jackson.datatype.jsr310.JavaTimeModule, com.fasterxml.jackson.datatype.jsr310.JSR310Module)
@Bean
public ObjectMapper serializingObjectMapper()
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
希望能帮到你。
【讨论】:
谢谢,但我试过了,我仍然得到完全相同的异常 可能是因为这是指序列化,而我的问题在于反序列化? 尝试另一种方式? ***.com/questions/40327970/… 此解决方案适用于 LocalDateTime 是您响应的一部分时,在我的情况下它是响应.. 仍在寻找解决方案以上是关于如何从 FeignClient 端点返回 LocalDateTime?的主要内容,如果未能解决你的问题,请参考以下文章
微服务设计指导-feignclient的compression参数导致报文返回为gzip格式带来的坑