Во-первых, я настоятельно рекомендую использовать java.time.LocalDateTime / java.time.LocalDate вместо java.util.Date (обработка часовых поясов является кошмаром при использовании java.util.Date, и вы можете ошибочно вставитьдата / время в вашей базе данных), форматирование даты с использованием @JsonFormat может решить только проблему с форматированием, но вы можете столкнуться с несоответствием данных при обработке значения даты / времени.
Если вы используете SpringBoot, в Spring Context зарегистрирован зарегистрирован форматтер, используемый для обработки LocalDate / LocalDateTime, и вы можете использовать этот тип данных без каких-либо изменений в вашей конфигурации.
Теперь, если вы не используете Spring Boot, вам, возможно, придется зарегистрировать форматтер LocalDate / LocalDateTime в вашей конфигурации (см. Этот пост Как зарегистрировать глобальную привязку данных для LocalDate весной mvc? , обратите внимание, что вы должны зарегистрировать тип LocalDateTime для отметок времени )
Обработка даты / времени не является простой задачей в Rest / Spring, но, поверьте мне, если вы реализуете LocalDate или LocalDateTime, вы не будетесломайте голову, пытаясь выяснить, что не так с некоторыми датами / временными метками, которые вставлены с неверными значениями в базу данных.
Примеры классов
DTO
public class Cookie {
private long id;
private LocalDateTime expirationDate;
//Getters/setters and other stuff
}
Контроллер
@RestController
@RequestMapping("/chocolateCookies")
public class ChocolateCookieApi extends CookieApi<ChocolateCookie> {
@GetMapping("/{cookieId}")
public ResponseEntity<Cookie> findCookie(@PathVariable long cookieId) {
final Cookie cookie = new Cookie();
cookie.setId(cookieId);
cookie.setExpirationDate(LocalDateTime.now().plusWeeks(4));
return new ResponseEntity<>(cookie, HttpStatus.OK);
}
//Other cookie stuff
}
Проверка конечной точки
Код доступен в GitHub https://github.com/karl-codes/cookie-monster
Удачного кодирования!