본문 바로가기
BackEnd/java spring

@DateTimeFormat annotation에 대한 정리

by kkkdh 2024. 11. 14.
728x90

@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 사용하자 

 

728x90

댓글