这篇“SpringBoot怎么对LocalDateTime进行格式化并解析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么对LocalDateTime进行格式化并解析”文章吧。首先第一点需要知道的是springboot默认依赖的json框架是jackson。当使用@ResponseBody注解返回json格式数据时就是该框架在起作用。如果字段属性是Date而非LocalDateTime时,通常我们会在application.properties里面配置如下:如下图所示,spring.jackson开头的配置会被JacksonProperties类获取进行使用。当返回json格式的时候,Jackson就会根据配置文件中日期格式化的配置对结果进行处理。但是如果字段属性为LocalDateTime呢?这种配置就失去了作用。这时候建议配置如下:这种配置方式自然是全局的,如果想针对某个字段特殊处理,可以在类字段上面添加注解@JsonFormat:如下所示,前台传参2020-08-30 11:11:11,后台使用LocalDateTime 接收。通常会报错类似如下:nested exception is org.springframework.core.convert.Co免费云主机域名nversionFailedException:Failed to convert from type [java.lang.String] to type [java.time.LocalDateTime ]很显然是在参数绑定的时候没有找到合适的转换器把String转换为对应的格式。实现原理简要描述在进行参数绑定的时候,会使用WebDataBinder对象。而创建WebDataBinder对象时,会遍历DefaultDataBinderFactory.initializer,使用其WebBindingInitializer initializer对WebDataBinder对象进行初始化。初始化方法具体可见ConfigurableWebBindingInitializer.initBinder(WebDataBinder binder),源码如下:而conversionService中包含了许多的convert-类型格式化器。在WebDataBinder进行参数绑定的时候就会使用不同的格式化器即不同的convert进行参数类型转换。关于参数绑定的过程,有兴趣的可以跟踪DataBinder.doBind方法,在这个过程中会对前台传输的值进行类型转换为目标参数需要的类型。自定义的localDateTimeConvert也是在这里被用到的。如下所示前台传String格式给后台参数endDate,参数类型为java.time.LocalDateTime。找到我们自定义的converter调用convert进行类型转换:可以看到转换后的结果为:自定义的格式化器会在SpringBoot启动时自动化配置过程中被加入,具体可以参考如下代码。WebMvcAutoConfiguration.mvcConversionService:其会走到SpringApplication.configureEnvironment方法处:ApplicationConversionService.getSharedInstance如下所示,这里可以看到其使用了设计模式中的懒汉式之双重校验锁来获取单例。继续对象创建过程会发现其走到了configure处:这里我们顺带看一下ApplicationConversionService的类继承示意图(其不只是可以作为ConversionService还可以作为ConverterRegistry与FormatterRegistry):创建ApplicationConversionService时会对其进行配置,这里很重要。其会注入默认的Converter和Formatter:该方法执行完,会添加52个类型转换器:addScalarConverters(converterRegistry);如下所示:这里会添加23个类型转换器:添加集合处理的类型转换器(这里会添加17个类型转换器):DateTimeFormatterRegistrar.registerFormattersDateTimeConverters.registerConvertersDateFormatterRegistrar.addDateConverters添加全局格式化器:添加全局类型转换器:以上就是关于“SpringBoot怎么对LocalDateTime进行格式化并解析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。
相关推荐: javascriptä¸çäºä»¶çå¬æåªäº
javascriptjavascriptDOMJSHTMLegonxxxaddEventListener()onxxxonchangeon免费云主机域名xxxDOM0addEventListener()DOM2DOM0DOM2javascriptjavascr…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。