Spring에서는 JSON 데이터와 Java 객체 간의 변환 작업을 수행할 때 @JsonFormat 및 @DateTimeFormat 어노테이션을 제공합니다. 이러한 어노테이션들은 날짜 및 시간 형식을 지정하여 JSON 직렬화 및 역직렬화 과정을 조정하는데 도움을 줍니다.
이 두 어노테이션의 사용법과 기능에 대해 알아보겠습니다.
@JsonFormat
@JsonFormat 어노테이션은 객체를 JSON으로 변환할 때 날짜와 시간을 표현하는 방식을 지정하는 데 사용됩니다.
이를 통해 JSON으로 변환될 때의 날짜와 시간 형식을 명시적으로 설정할 수 있습니다.
import com.fasterxml.jackson.annotation.JsonFormat;
public class MyObject {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
}
위처럼 "createdAt" 필드가 JSON으로 변환할 때 "yyyy-MM-dd HH:mm:ss"형식으로 표현되도록 지정되었습니다.
@DateTimeFormat
@DateTimeFormat 어노테이션은 반대로 JSON 데이터를 객체로 변환할 때 사용됩니다.
이 어노테이션은 JSON으로 받은 문자열을 Java의 Data 또는 Calendar 객체로 변환할 때 사용됩니다.
import org.springframework.format.annotation.DateTimeFormat;
public class MyDTO {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime date;
}
위처럼 JSON 데이터로부터 "date" 필드를 변환할 때 "yyyy-MM-dd HH:mm:ss" 형식의 문자열을 LocalDateTime 객체로 변환합니다.
차이점
@JsonFormat과 @DateTimeFormat은 모두 날짜와 시간 형식을 지정하는 데 사용되지만 그 사용 목적과 대상이 다릅니다.
@JsonFormat
- 목적: JSON 데이터를 객체로 변환할 때 날짜와 시간을 표현하는 방식을 지정
- 대상: 객체를 JSON으로 변환할 때 날짜와 시간을 표현하는 필드에 사용
@DateTimeFormat
- 목적: JSON 데이터를 객체로 변환할 때 특히 웹 요청에서 JSON으로 전달된 문자열을 Java의 Date 또는 Calendar 객체로 변환할 때 사용
- 대상: 웹 요청에서 JSON으로 전달된 문자열을 Date 또는 Calendar 객체로 변환해야 하는 필드에 사용
즉, @JsonFormat 은 객체를 JSON으로 변환할 때 필요한 형식을 지정하는 데 사용되고
@DateTimeFormat은 JSON 데이터를 Java의 Date 또는 Calendar 객체로 변환할 때 필요한 형식을 지정하는 데 사용됩니다.
Spring에서는 @JsonFormat과 @DateTimeFormat 어노테이션을 사용하여 JSON 데이터와 Java 객체 간의 변환 작업을 효율적으로 수행할 수 있습니다. 이를 통해 애플리케이션의 안정성을 유지하고 데이터의 일관성을 유지할 수 있습니다.
'Backend > Spring' 카테고리의 다른 글
| [Spring] @Scheduled 주기적인 작업 처리하기 (0) | 2024.07.27 |
|---|---|
| [Spring] ArgumentResolver 사용하기 (0) | 2024.07.20 |
| [Spring] Path Variable과 Query Parameter (2) | 2024.07.18 |
| [Spring] JPA에서 쿼리 사용하는 방법 (0) | 2024.07.11 |
| [Spring] Spring 이란 (0) | 2024.01.12 |