使用Spring Boot配置设置MySQL JDBC时区

2023/05/18

1. 概述

有时,当我们在MySQL中存储日期时,我们意识到数据库中的日期与我们的系统或JVM不同。

其他时候,我们只需要使用另一个时区运行我们的应用程序。

在本教程中,我们将看到使用Spring Boot配置更改MySQL时区的不同方法

2. 时区作为URL参数

我们可以指定时区的一种方法是在连接URL字符串中作为参数。

为了选择我们的时区,我们必须添加connectionTimeZone属性来指定时区:

spring:
    datasource:
        url: jdbc:mysql://localhost:3306/test?connectionTimeZone=UTC
        username: root
        password:

此外,我们当然可以使用Java配置来配置数据源。

我们可以在MySQL官方文档中找到有关此属性和其他属性的更多信息。

3. Spring Boot属性

或者,我们可以在Spring Boot配置中指定time_zone属性,而不是通过connectionTimeZone URL参数指示时区:

spring.jpa.properties.hibernate.jdbc.time_zone=UTC

或者使用YAML:

spring:
    jpa:
        properties:
            hibernate:
                jdbc:
                    time_zone: UTC

4. JVM默认时区

当然,我们可以更新Java的默认时区。

为了选择我们的时区,我们必须在URL中添加属性forceConnectionTimeZoneToSession=true。然后我们只需要添加一个简单的方法:

@PostConstruct
void started() {
  TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}

但是,这个解决方案可能会产生其他问题,因为它是应用程序范围的。也许应用程序的其他部分需要另一个时区。例如,我们可能需要连接到不同的数据库,并且出于某种原因,它们需要将日期存储在不同的时区。

5. 总结

在本教程中,我们看到了几种在Spring中配置MySQL JDBC时区的不同方法。我们使用URL参数、属性和更改JVM默认时区来完成此操作。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章