springboot 8小時問題

2021-09-23 13:25:05 字數 1604 閱讀 3819

本文章純屬自己經驗總結,如有誤導,請多包涵。

自從使用springboot 很少注意時間儲存顯示的問題 這次碰到了 弄了好久。。。終於有點眉目

1 當 專案部署在世界時的伺服器上,配置檔案中寫入

spring.jackson.time-zone = gmt+8

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss

當前端提交post請求,後端用@requestbody接收請求,此時 日期型字串轉換成date型資料時 會少8個小時  儲存到後端資料庫後 再通過查詢顯示到前端時 將date型別資料轉換成日期字串後  時間多了8小時

2 當 專案部署在世界時的伺服器上,配置檔案中未寫入gmt+8

#spring.jackson.time-zone = gmt+8

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss

當前端提交post請求,後端用@requestbody接收請求,此時 日期型字串轉換成date型資料時 時間正常  儲存到後端資料庫後 再通過查詢顯示到前端時 將date型別資料轉換成日期字串後  時間正常

3 當 專案部署在北京時的伺服器上,配置檔案中寫入

spring.jackson.time-zone = gmt+8

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss

當前端提交post請求,後端用@requestbody接收請求,此時 日期型字串轉換成date型資料時 時間正常 儲存到後端資料庫後 再通過查詢顯示到前端時 將date型別資料轉換成日期字串後  時間正常

2 當 專案部署在北京時的伺服器上,配置檔案中未寫入 gmt+8

#spring.jackson.time-zone = gmt+8

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss

當前端提交post請求,後端用@requestbody接收請求,此時 日期型字串轉換成date型資料時 會少8個小時  儲存到後端資料庫後 再通過查詢顯示到前端時 將date型別資料轉換成日期字串後  時間多了8小時

總結:spring-boot中對於@restcontroller或者@controller+@responsebody註解的介面方法的返回值預設是json格式,

所以當對於date型別的資料,在返回瀏覽器端是會被spring-boot預設的jackson框架轉換,而jackson框架預設的時區gmt(相對於中國是少了8小時)。

若專案部署再世界時的伺服器上 配置檔案中不用加gmt+8

若專案部署再北京時的伺服器上 配置檔案中用加gmt+8

springboot8 靜態資源處理

靜態資源對映規則 首先,我們搭建乙個普通的springboot專案,回顧一下helloworld程式 寫請求非常簡單,那我們要引入我們前端資源,我們專案中有許多的靜態資源,比如css,js等檔案,這個springboot怎麼處理呢?靜態資源對映規則 springboot中,springmvc的web...

Mysql連線 8小時問題

mysql預設設定當乙個連線的空閒時間超過8h,mysql就會自動斷開該連線,而連線池仍認為該連線有效。此情況下,若客戶端向連線池請求連線的話,連線池就會把已經失效的連線返回給客戶端,此時客戶端使用失效連線時即丟擲異常。解決方法 配置 spring.datasource.validation que...

MySql的8小時問題

如果連線閒置8小時 8小時內沒有進行資料庫操作 mysql就會自動斷開連線,要重啟tomcat。解決辦法 1.使用hibernate c3p0連線池 新增如下配置即可 org.hibernate.dialect.mysqldialect com.mysql.jdbc.driver jdbc mysq...