Перейти к основному содержимому

Установка часового пояса JDBC MySQL с использованием конфигурации Spring Boot

· 2 мин. чтения

1. Обзор

Иногда, когда мы сохраняем даты в MySQL, мы понимаем, что дата из базы данных отличается от нашей системы или JVM.

В других случаях нам просто нужно запустить наше приложение с другим часовым поясом.

В этом руководстве мы рассмотрим различные способы изменения часового пояса MySQL с помощью конфигурации Spring Boot .

2. Часовой пояс как параметр URL

Один из способов указать часовой пояс — в строке URL-адреса подключения в качестве параметра.

Чтобы выбрать наш часовой пояс, мы должны добавить свойство connectionTimeZone , чтобы указать часовой пояс:

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

Кроме того, мы можем, конечно, вместо этого настроить источник данных с конфигурацией Java .

Мы можем найти больше информации об этом свойстве и других в официальной документации MySQL .

3. Свойство Spring Boot

Или вместо указания часового пояса через параметр URL-адреса connectionTimeZone мы можем указать свойство time_zone в нашей конфигурации Spring Boot:

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

Или с YAML:

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

4. Часовой пояс JVM по умолчанию

И, конечно же, мы можем обновить часовой пояс по умолчанию, который есть в Java.

Чтобы выбрать наш часовой пояс, мы должны добавить свойство forceConnectionTimeZoneToSession=true в URL. И тогда нам просто нужно добавить простой метод:

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

Но это решение может вызвать другие проблемы, поскольку оно распространяется на все приложение. Возможно, другим частям приложений нужен другой часовой пояс. Например, нам может понадобиться подключиться к разным базам данных, а им по какой-то причине нужно, чтобы даты хранились в разных часовых поясах.

5. Вывод

В этом руководстве мы увидели несколько различных способов настройки часового пояса MySQL JDBC в Spring. Мы сделали это с параметром URL, со свойством и изменив часовой пояс JVM по умолчанию.

Как всегда, полный набор примеров закончился на GitHub .