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
即可立即永久解锁本站全部文章