혼자서 코드를 치다가 API를 만들고 호출을 했다. 하지만, 호출결과가
"timestamp": "2022-09-29T07:45:07.941+00:00",
"status": 406,
"error": "Not Acceptable",
"path": "/v11/members"
이러하였다.
찾아보니 내가 dto클래스에 getter를 만들지 않았었다.
대략 느낌적으로는 당연히 Spring이 dto클래스를 사용하니까 getter가 필요하겠거니 생각하며 지내왔지만, 혼자서 이렇게 코드를 치니 모든게 낯설었다.
스프링 부트는 Jackson 라이브러리를 사용하는데 이를 통해 json 데이터들을 직렬화 / 역직렬화 작업을 진행한다. 이때 직렬화시 getter를 사용한다.
DTO들을 JSON데이터로 다시 가공한다.
다시말해 스프링 부트는 Getter를 사용하여 DTO클래스에 있는 데이터들을 JSON 데이터로 다시 가공할때 Getter를 이용한다.
추가적으로 대부분의 필드는 private로 사용하여 접근을 막는다. 그래서 외부에서 사용하기 위해서는 getter가 필요하다. 지금과 같은 상황은 스프링부트가 DTO클래스의 필드를 사용하기 위해 우리가 getter를 만들어주어서 사용할 수 있게 만든것이라고 생각하면 될것같다.