空夜

SpringBoot2.0整合SSM(踩坑总结+Demo实例)
前阵子SpringBoot2.0发布了,我也试着把1.5.9版本的项目升级到了2.0ヾ(≧∇≦*)ゝ。其中遇到了一...
扫描右侧二维码阅读全文
27
2018/12

SpringBoot2.0整合SSM(踩坑总结+Demo实例)

前阵子SpringBoot2.0发布了,我也试着把1.5.9版本的项目升级到了2.0ヾ(≧∇≦*)ゝ。其中遇到了一些问题,在此总结一下。→_→


SpringBoot2.0 + SSM 遇到的问题

以我比较熟悉的SSM框架为例(有关如何建立SpringBoot+SSM项目请参考我的另一篇博客 ̄﹃ ̄),遇到了以下问题:
1.数据库连接失败:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized...
2.返回给前端的Date类型数据从默认的时间戳变成了UTC字符串:2018-12-13T09:27:41.000+0000

数据库连接失败

运行项目时不报错,请求查询数据时出现如下异常:

com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

什么意思呢?
百度了一下,大概是数据库的时区发生了变化,大多数的解决办法都是更改数据库的时区。我试了一下,没效果???而且不对啊,总不能我升级了一下你就把我数据库搞了,我要是一堆服务器,还能一个一个改过去??⌇●﹏●⌇

正确的解决办法是将SpringBoot有关Mysql数据源的配置后面加上一个参数:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssm_demo?useSSL=false&autoReconnect=true&serverTimezone=UTC

没错,就是这个serverTimezone=UTC,即国际协调时间。下面的问题也跟这个UTC时间有关

Date时间戳配置

某个HTTP请求返回的数据中,Date类型的数据变成了一串奇怪 的格式时间:

createTime: "2018-12-13T09:27:41.000+0000"

查了一下,这个是UTC时间,SpringBoot2.0是用这个取代了1.0时代的默认格式了。上面那个数据库连接失败也是这个原因。
要想用原来的时间戳样式,在application.ymlapplication.properties中加上如下配置即可:

spring:
  jackson:
    serialization:
      write-dates-as-timestamps: true

SpringBoot2.0 + SSM实现CRUD操作(Git源码)

emmmm目前项目已经搭好了,查询操作也写好了,但是CRUD没写完,而且界面还奇丑无比。预计元旦节会放出来的嘿嘿 。敬请期待啦!

另外,想要开发一款个人博客,目前也不知道能做出什么样——毕竟我前端实在是菜鸡

Last modification:December 27th, 2018 at 10:50 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment