javascript
data spring 指定时区_SpringBoot 统一时区的方案
系統采用多時區設計的時候,往往我們需要統一時區,需要統一的地方如下:
服務器(Tomcat服務)
數據庫(JPA + Hibernate)
前端數據(前端采用Vuejs)
思路為:
將數據庫和服務器的時間都采用標準時區UTC存儲處理。前端拿到標準時區的數據,統一根據用戶所在時區進行轉換。這樣保證了后端數據時區的一致性,前端根據實際情況進行渲染。
保證服務器時區為UTC
服務啟動的時候,將當前時區設置為UTC,代碼如下:
@SpringBootApplication
public class Application {
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
這樣就保證了Java程序的時區為UTC。
保證數據庫時區為UTC
Hibernate支持設置時區,在Springboot中增加配置如下:
spring.jpa.properties.hibernate.jdbc.time_zone = UTC
如果是MySQL數據庫,連接池鏈接后面增加配置如下:
?serverTimezone=TimeZone&useLegacyDatetimeCode=false
如:
spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC
其中useLegacyDatetimeCode參數默認是true,我們需要手動設置為false,否則無效。
總結
以上是生活随笔為你收集整理的data spring 指定时区_SpringBoot 统一时区的方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暖通lisp快捷键_CAD 快捷键一览
- 下一篇: R语言chorolayer_R语言空间可