✅ @JsonIgnoreProperties(ignoreUnknown=true)
이 어노테이션의 역할은 역직렬화(deserialization) 과정에서,
즉, JSON 데이터를 읽어 객체에 매핑해주는 과정에서 객체에 없는 알 수 없는 property가 JSON 데이터에 있어도 에러를 내뱉지 않고 무시해준다는 것이다.
🔎 예제
쇼핑몰의 특정 상품의 가격을 바꾸는 API를 통해 이 어노테이션을 사용하는 예를 러프하게 하나 들어보자.
(1) 클라이언트 측에서는 해당 API의 Request Body에 아래와 같은 JSON 형태의 데이터를 담아 서버에 요청한다.
{
"price": 24000
}
(2) 서버에서는 요청 정보를 아래와 같은 PriceChangeRequest라는 객체로 받는다.
public class PriceChangeRequest {
private final int price;
}
근데 만약, 클라이언트 측에서 아래처럼 서버에는 없는 key-value를 추가한다면?
{
"price": 24000,
"unknown_property": "yeahyeah"
}
이러한 케이스를 대비하는 설정이 프로젝트에 적용되어 있지 않다면 에러가 발생할 것이다.
이때 @JsonIgnoreProperties(ignoreUnknown= rue)을 아래처럼 PriceChangeRequest 클래스에 붙여주게 되면,
에러가 발생하지 않고 스무스하게 넘어간다.
@JsonIgnoreProperties(ignoreUnknown = true)
public class PriceChangeRequest {
private final int price;
}
✏️ 공부한점
이러한 어노테이션을 쓰지않아도 문제는 되지않는다.
이미 최초 Spring Boot 환경설정에서 알 수 없는 property에 대해 에러가 발생하는 것을 disable 시켜버렸기 때문이다.
1. Spring Boot 최초 환경설정에서 JSON 데이터에 알 수 없는 property가 있어도 무시하는 설정이 되어 있다.
2. 이 설정을 임의로 변경하지 않는 이상 @JsonIgnoreProperties(ignoreUnknown = true)는 필요없다.
'Back-end > SpringBoot' 카테고리의 다른 글
| [ SpringBoot ] 비동기 @Async 이해와 Thread Pool (3) | 2025.07.28 |
|---|---|
| [ SpringBoot] AOP (4) | 2025.07.25 |
| [SpringBoot] Object Mapper (1) | 2025.05.29 |
| [SpringBoot] @Transactional 트랜잭션 사용법 및 옵션 (0) | 2025.01.24 |
| [SpringBoot] REST API 구조 설계 및 SpringBoot 응답 클래스 만들기(feat. SingleResult, ListResult) (0) | 2024.12.19 |