Spring Boot - 직렬화, 역직렬화(1)

itonse·2024년 1월 21일
0

Spring

목록 보기
8/8

1. 직렬화

  • 객체의 상태를 바이트 스트림으로 변환하는 과정
  • 이를 통해 객체를 파일, DB, 메모리 등에 저장하거나 네트워크를 통해 전송 가능
  • 직렬화된 객체는 역직렬화를 통해 다시 원래의 객체 상태로 복원 가능

2. Spring Boot에서의 직렬화

주로 HTTP 요청과 응답에서 JSON 형태로 이루어지는데, 이를 위해 Jackson 라이브러리가 많이 사용된다.

Jackson 이란?

  • Jackson 라이브러리는 기본적으로 spring boot start web에 포함되어있다.

  • Jackson은 JSON 데이터를 처리하기 위한 라이브러리로, Java 객체를 JSON으로 변환하거나 그 반대로 변환하는 기능을 제공한다.

Jackson을 사용한 JSON 직렬화

  • @RestController 어노테이션을 사용한 클래스에서는 메서드가 반환하는 객체가 자동으로 JSON 으로 직렬화되어 HTTP 응답에 포함된다.

  • 반대로 @RequestBody 어노테이션을 사용하면, HTTP 요청의 JSON 본문이 지정된 자바 타입의 객체로 자동으로 역직렬화된다.

  • 이러한 과정은 Spring Boot의 내부적인 Jackson 라이브러리에 의해 처리되며, 개발자가 별도의 직렬화나 역직렬화 코드를 작성할 필요는 없다.

(추가) @JsonIgnore

  • Jackson 라이브러리에서 제공하는 어노테이션으로, Java 객체를 JSON으로 직렬화할 때 특정 필드를 무시하도록 지시하는데 사용된다.

* 주요 사용 예시

  1. 민감한 정보 숨기기: 비밀번호와 같은 민감한 데이터를 JSON 응답에서 제외하고 싶을 때 사용한다.
  2. 불필요한 정보 제거: 클라이언트에게 불필요하거나 관련 없는 정보를 JSON 응답에서 제외한다.
  3. 순환 참조 방지: 객체 간의 순환 참조가 있을 경우 사용하여 무한 루프를 방지한다.
  4. 성능 최적화: 크기가 크거나 계산에 많은 시간이 소요되는 필드를 JSON 응답에서 제외함으로써 성능을 향상시킨다.

0개의 댓글

관련 채용 정보