Definindo o fuso horário JDBC do MySQL usando a configuração de inicialização Spring
1. Visão geral
Às vezes, quando armazenamos datas no MySQL, percebemos que a data do banco de dados é diferente de nosso sistema ou JVM.
Outras vezes, só precisamos executar nosso aplicativo com outro fuso horário.
Neste tutorial, veremos maneiras diferentesto change the timezone of MySQL using Spring Boot configuration.
2. Fuso horário como um parâmetro de URL
Uma maneira de especificar o fuso horário é a string da URL de conexão como parâmetro.
Por padrão, o MySQL usauseLegacyDatetimeCode=true. Para selecionar nosso fuso horário, temos que alterar esta propriedade parafalse. E, claro, também adicionamos a propriedadeserverTimezone para especificar o fuso horário:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useLegacyDatetimeCode=false
username: root
password:
Além disso, podemos, é claro,configure the datasource with Java configuration.
Temos mais informações sobre esta e outras propriedades noMySQL official documentation.
3. Propriedade Spring Boot
Ou, em vez de indicar o fuso horário por meio do parâmetro de URLserverTimezone, podemos especificar a propriedadetime_zone em nossa configuração Spring Boot:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
Ou com YAML:
spring:
jpa:
properties:
hibernate:
jdbc:
time_zone: UTC
Mas,it’s still necessary to add useLegacyDatetimeCode=false in the URL as como vimos antes.
4. Fuso Horário Padrão da JVM
E, é claro, podemos atualizar o fuso horário padrão que o Java possui.
Novamente,we add useLegacyDatetimeCode=false in the URL as antes. E então só precisamos adicionar um método simples:
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
Mas,this solution could generate other problems since it’s application-wide. Talvez outras partes dos aplicativos precisem de outro fuso horário. Por exemplo, pode ser necessário conectar-se a bancos de dados diferentes e, por algum motivo, precisam de datas para serem armazenadas em fusos horários diferentes.
5. Conclusão
Neste tutorial, vimos algumas maneiras diferentes de configurar o fuso horário do MySQL JDBC no Spring. Fizemos isso com um parâmetro de URL, com uma propriedade e alterando o fuso horário padrão da JVM.
Como sempre, o conjunto completo de exemplos éover on GitHub.