@DateTimeFormat은 Spring에서 지원하는 어노테이션으로 선언 시, 해당 필드나 형식이 날짜 + 시간의 양식으로 지정되어야 함을 명시할 수 있습니다.
문자열 데이터를 java.util.Date, java.util.Calendar, java.time.LocalDate, LocalTime, LocalDateTime 등과 같은 날짜 및 시간을 표현하는 객체로 변환할 때 사용합니다.
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private LocalDateTime currentDateTime; // 예시
오늘 위와 같은 코드를 마주쳐서 DateTimeFormat 어노테이션을 어떻게 사용했는지 궁금해 해당 글을 작성하고 있는데요,
위의 ISO.DATE_TIME 옵션은 "yyyy-MM-dd'T'HH:mm:ss.,SSSXXX" 양식의 문자열 정보를 LocalDateTime 객체로 formatting 하겠음을 의미하는 것이죠
또 아래 글에서 추가적으로 찾아본 내용으로
@RequestBody, @ResponseBody 어노테이션을 기입한 객체의 경우 Jackson 라이브러리를 이용하고,
@DateTimeFormat의 경우 Spring이 제공하기에 @RequestBody, @ResponseBody가 선언된 객체 내에서는 직렬화가 동작하지 않는다고 하네요,
그 이유는 Spring이 Jackson 라이브러리를 포함하고 있지만, Jackson 라이브러리의 경우 Spring에 의존하고 있지 않기 때문에, @DateTimeFormat을 인식하지 못하기 때문이죠
위 글에 따른 추가 정리
1. DateTimeFormat annotation은 날짜 및 시간 정보의 문자열 데이터를 특정 양식에 맞춰 객체로 직렬화하기 위한 용도로 사용한다.
2. @ResponseBody, @RequestBody 어노테이션 내부에서는 @JsonFormat을 사용하자
3. @RequestParam, @ModelAttribute 어노테이션 객체에서는 @DateTimeFormat 사용하자
'BackEnd > java spring' 카테고리의 다른 글
@RequestParam이 매핑된 파라미터를 전달하는 여러 케이스 (0) | 2024.11.18 |
---|---|
[Spring MVC] 기본 기능 (1) | 2023.05.20 |
[Spring MVC] 구조 이해 (0) | 2023.05.15 |
[Spring MVC] MVC 프레임워크 만들기 (0) | 2023.05.06 |
[Spring MVC] MVC 패턴에 대해서 (0) | 2023.03.20 |
댓글