Back-end/Spring

[Spring] @ResponseBody에서 객체를 JSON 반환(HttpMessageConverter)

shoney9254 2023. 3. 30. 11:20
반응형

결론은 @ResponseBody어노테이션을 사용해도, Getter 사용하지 않는 필드는 자동으로 JSON 변환이 안됩니다. (Getter를 사용해!)

 

롬복 @Data 어노테이션을 남발하다 보면, 기본적인 @ResponseBody가(이것도 물론 @RestController로 사용하긴 합니다.) 작동하는 최소의 조건을 잊고 살 수 있다. 토이 프로젝트를 진행하면서 최소한의 어노테이션으로 진행해보려고 하니 예전에 배웠던 것들도 다시 한번 정리하는 시간을 가지게 되었다. 하나둘 씩 정리해서 블로그에 올리려고 한다.

 

1. @ResponseBody

- @ResponseBody 어노테이션은 컨트롤러 메서드에서 반환되는 객체를 HTTP 응답 본문에 직접 쓰기 위해 사용됩니다.

- 반환 타입에 따라 적절한 HttpMessageConverter가 선택되어 해당 객체를 변환 후 응답 바디에 쓰여진다.

 

2. HttpMessageConverter

- 스프링에서 요청과 응답할 때 HttpMessageConverter를 사용해서 변환한다. 

- 예를 들어,  String은 StringHttpMessageConverter가 선택되어 반환.

- Json은 MappingJackson2HttpMessageConverter 가 선택되어서 반환.

- MappingJackson2HttpMessageConverter가 반환할 때, 필드의 Getter를 사용해서 JSON객체로 변환한다.

 

 

반응형