我們先瞭解下,為什麼需要配置日期格式化? 通常情況下,發起一個 Http 請求,Spring Boot 會根據請求路徑映射到指定 Controller 上的某個方法的參數上,接著,Spring 會自動進行類型轉換。 對於日期類型的參數,Spring 預設是沒有配置如何將字元串轉換成日期類型的 未配置 ...
我們先瞭解下,為什麼需要配置日期格式化?
通常情況下,發起一個 Http 請求,Spring Boot 會根據請求路徑映射到指定 Controller 上的某個方法的參數上,接著,Spring 會自動進行類型轉換。
對於日期類型的參數,Spring 預設是沒有配置如何將字元串轉換成日期類型的
未配置日期格式化會如何?
我們新建一個 Web 項目,並定義一個介面:
package site.exception.springbootdateformat.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import site.exception.springbootdateformat.entity.User;
/**
* @time 21:03
* @discription
**/
@RestController
public class UserController {
/**
* 定義一個創建用戶的介面
* @param user
* @return
*/
@PostMapping("/user")
public String createUser(User user) {
// 列印創建時間
System.out.println(user.getCreateTime().toString());
return "Create user success !";
}
}
User.java
:
package site.exception.springbootdateformat.entity;
import java.io.Serializable;
import java.util.Date;
/**
* @time 21:00
* @discription
**/
public class User implements Serializable {
/**
* 用戶名
*/
private String username;
/**
* 密碼
*/
private String password;
/**
* 創建時間
*/
private Date createTime;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
用 Postman 工具發起對該介面的表單請求,看看結果:
服務報錯,無法將字元串類型轉換成 java.util.Date
類型。
配置日期格式化
要讓 Spring Boot 能夠按照指定的格式進行日期類型轉換,需要做以下步驟:
- 定義一個
MvcConfig
類,讓其實現WebMvcConfigurer
介面; - 重寫
addFormatters
方法; - 添加一個
DateFormatter
;
package site.exception.springbootdateformat.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author www.exception.site (exception 教程網)
* @date 2019/2/16
* @time 20:55
* @discription
**/
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/**
* 配置日期格式化
* @param registry
*/
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
}
}
接下來,再次以表單的形式訪問 /user
介面,看看效果:
正確輸出 Create user Success ! 介面,並且控制台,也列印了 createTime
值,說明 Spring Boot 已經自動幫我們做了轉換操作:
至此,如何在 Spring Boot 中配置全局的日期格式化就完成了!
註意:本節中的轉換僅支持表單形式請求,不支持
application/json
的請求方式!
本文來自博客園,作者:深碼青年,轉載請註明原文鏈接:https://www.cnblogs.com/shenMaQN/p/17758149.html