spring-boot-web和java8 datetime

使用LocalDateTime作为参数的时候会解析失败:

@GetMapping("/datetime")
public String datetime(@RequestParam LocalDateTime datetime) {

需要加入如下配置:

@Configuration
public class LocalDateTimeConfig {
    @Bean
    public Formatter<LocalDateTime> localDateFormatter() {
        return new Formatter<LocalDateTime>() {
            @Override
            public LocalDateTime parse(String s, Locale locale) throws ParseException {
                return LocalDateTime.parse(s, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
            }

            @Override
            public String print(LocalDateTime localDateTime, Locale locale) {
                return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(localDateTime);
            }
        };
    }
}

然后使用FeignClient调用的时候, 在FeignClient这端也会产生一个解析问题, 没有正确的解析ISO_8601格式

解决方法: 新增一个配置:

@Bean
public Contract feignContract() {
    return new SpringMvcContract();
}

就可以使用FeignClient传递LocalDateTime对象了

例子代码见: https://gitee.com/liuxy9999/mytest-spring-cloud

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容