@RestController 어노테이션을 사용하면, Spring에서 해당 클래스가 REST 컨트롤러로 작동하게 하고, 반환 값에 자동으로 마샬링을 적용하게 한다. 즉, 메서드가 반환하는 객체는 자동으로 HTTP 응답 본문으로 변환되며, 보통 JSON 또는 XML 형식으로 클라이언트에게 전송된다.
이 과정에서 사용되는 라이브러리는 Jackson과 같은 JSON 변환 라이브러리일 수 있으며, Spring Boot 프로젝트의 경우, 이 라이브러리가 기본적으로 포함되어 있다.
@GetMapping
public ResponseDTO getUser() {
org.springframework.security.core.userdetails.User principal =
(org.springframework.security.core.userdetails.User)
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Member memberDTO = memberService.getMember(principal.getUsername());
ResponseDTO responseDTO = ResponseDTO.builder()
.status("SUCCESS")
.message(Msg.SUCCESS_MEMBER_INFO)
.data(memberDTO)
.build();
return responseDTO;
}
@GetMapping
public ResponseEntity<ResponseDTO> getUser() {
org.springframework.security.core.userdetails.User principal =
(org.springframework.security.core.userdetails.User)
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Member memberDTO = memberService.getMember(principal.getUsername());
ResponseDTO responseDTO = ResponseDTO.builder()
.status("SUCCESS")
.message(Msg.SUCCESS_MEMBER_INFO)
.data(memberDTO)
.build();
return new ResponseEntity(responseDTO, HttpStatus.OK);
}
따라서 응답 형태를 DTO만 반환하거나 ResponseEntity 형식으로 반환하거나 모두 같은 결과를 나타낼 수 있다.
여기서 ResponseEntity 객체를 사용하지 않고 직접 반환하는 경우, Spring은 기본적으로 HTTP 상태 코드를 200 OK로 설정한다.
컴포넌트가 데이터를 전달하기 위해서 포트로 전달되는 값은 물론 함수의 변수와 반환값까지 변화하여 보내는 전송기술이다.