백엔드를 공부해본 사람은 알 것이다.
모든 프로젝트의 데이터는 Json 타입으로 넘어간다.
그래야 프론트엔드에서 이를 받아 출력문을 만들기 수월해진다.
이렇게 Json타입으로 넘어가는 데이터를 관리하는데에 쓰이는 어노테이션중 하나가 JsonInclude이다.
객체에 데이터가 존재하고, 이 객체가 Json타입으로 넘어가 인스턴스들을 데이터로 가지고 프론트엔드로 간다.
이 때, 넘어가는 데이터에 Json으로 어떤 것들이 넘어가는지를 정할 수 있다.
그러면 어떻게 그 데이터들을 정할 수 있을까?
@JsonInclude가 없고 해당 객체의 데이터를 프론트엔드로 넘기면,
데이터가 어떤 상태건 모든 데이터가 Json으로 프론트엔드로 넘어간다.
이 때 어노테이션과 괄호에 추가 설정을 통해 어떻게 데이터를 넘길지 정할 수 있다.
JsonInclude.Include.~~를 정해 바꿀 수 있는데, 이 종류를 한번 정리해보았다.
ALWAYS
|
인스턴스의 값이 어떤 상태이던 간에 값이 Json에 포함된다. |
NON_NULL | null값이 아닌 값들만 Json에 포함된다. |
NON_ABSENT | null값과 참조형 인스턴스의 "absent"(참조형 인스턴스가 만들어졌지만 값이 정해지지 않은 경우)가 아닌 값들만 Json에 포함된다. |
NON_EMPTY | 비어있는 값들을 제외하고 Json에 포함된다. 비어있다는 뜻은, 1. null값이다. 2. 호출형 인스턴스가 값을 가지지 않은 absent상태거나 3. Collection(예를들면 List).isEmpty가 참이거나 4. Array.length가 0이거나 5. String.length()가 0일 때 |
NON_DEFAULT | default값들을 제거한다. 예를 들어, Integer x가 인스턴스로 존재할 때, default = 0으로 되어있을 때, 이 값이 0이라면 default로 제거된다. 추가적으로 NON_EMPTY도 적용된다. |
CUSTOM | 개별적인 valueFilter와 contentFilter를 적용해 Json에 들어갈 데이터를 정한다. 이는 후에 만들 일이 있다면 링크를 달아두겠다. |
USE_DEFAULT | 번역도 돌려보고 공식 설명 페이지도 가보았지만, 자세한 설명은 얻지 못했다. 이해한 바로는, 기본값이 의미가 있을 때 사용한다고 하는데, 이런 경우를 생각해보질 못했다. 이 또한 후에 쓰거나 이해하는 순간이 있다면 설명을 수정하겠다. |
'스프링 공부 > 어노테이션 정리' 카테고리의 다른 글
@EventListner (0) | 2024.02.02 |
---|---|
@뭐시깽이Constructor (0) | 2023.01.02 |
@Log(@Slf4j를 써보다가 궁금해서 찾아본 내용 정리) (3) | 2023.01.01 |
@Bean (0) | 2022.12.28 |
@Configuration (0) | 2022.12.28 |