
一、springboot没有设置时区
设置方式是在springboot的yml文件里面设置东八区的时间,可以配合格式化使用,具体写法是:
spring:
# jackson时间格式化
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm
二、mysql没有设置时区
如果不是进行了第一个设置还没解决问题,mysql版本用的是6.X的话,需要在url加上serverTimezone=Asia/Shanghai把时区配置成上海的
url: jdbc:mysql://xx.xx.xx.xx:3306/mysqlName?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
Spring Boot 在处理对象的序列化和反序列化时,默认使用框架自带的JackSon配置。使用框架默认的,通常会面临如下问题:
针对上述问题,存在很多种解决方案。由于底层框架统一配置拦截类实现的模式不同,还是会存在差异,本文主要说明在不同的配置场景下,自定义Jackson配置的一些注意事项和差异化原因:
为了解决特殊对象(如日期)的序列化和反序列化问题,常用方案如下:
自定义一个Jackson配置信息,需要了解Jackson的一些配置标准,如:
重新编写一个ObjectMapper,替换系统默认的bean,就可以实现接口在post请求模式时,对象序列化与反序列化走子定义配置信息了。
重新编写Jackson后,并不能处理get请求时,日期等特殊对象的序列化处理;针对get请求,编写对象的序列化规则函数,通过实现addFormatters()接口,可扩展支持;
编写一个自定义的ObjectMapper bean对象,设置优先级替换默认bean。
重新编写Jackson后,并不能处理get请求时,日期等特殊对象的序列化处理;针对get请求,编写对象的序列化规则函数,通过实现addFormatters()接口,可扩展支持;
编写自定义配置Jackson信息时,需要重写extendMessageConverters方法。具体技术细节原因,请参考文档《 Spring Boot实现WebMvcConfigurationSupport导致自定义的JSON时间返回格式不生效》
参考文档:《两个知识点应用场景 》, 《使用注意事项》
Spring的 WebMvcConfigurer 接口提供了很多方法让开发者来定制SpringMVC的配置。
WebMvcConfigurationSupport implements ApplicationContextAware, ServletContextAware。支持的自定义的配置更多更全,WebMvcConfigurerAdapter有的方法,这个类也都有。该类注释内容翻译:这是提供MVC Java config 背后配置的主要类。 通常是通过将@EnableWebMvc添加到应用程序的@Configuration类中来导入的。 另一个更高级的选择是直接从此类扩展并在需要时重写方法,记住子类要添加@Configuration,重写带有@Bean的方法也要加上@Bean。
参考文档: 《拦截失效原因》
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)