22년 12월 10일 스프링 입문 과제 수정
zep에 혼자 접속해 알고리즘을 풀고있었는데 갑자기 튜터님이 들어오셔서 입문과제에 대한 피드백을 해주셨다.
튜터님의 피드백을 받아 입문과제를 수정했다.
@JsonIgnore에 대한 피드백을 받았는데, 이 어노테이션은 전에 DTO를 통하지 않고 바로 Entity를 통해 값을 받아와 반환할때, password가 자꾸 노출되어서 json에서 노출되지 않게 하기 위해 넣어놓은 것이었다.
DTO를 통해 값을 반환되게 하는 수정 후, DTO를 통해 반환받아도 전체 목록 조회에서는 DTO가 entity의 리스트의 형태로 반환되때문에 @JsonIgnore를 하지 않으면 password가 그대로 노출되는 문제가 있었다.
하지만 튜터님은 만약 password가 노출되어야 하는 상황해서 @JsonIgnore가 걸려있으면 값을 불러오지 못하는 문제가 생길수 있으며, Entity에는 순수한 자바 문법이 들어가야한다고 피드백을 주셨다.
그래서, 일단 목록 조회 DTO를 password를 제외한 원하는 값만 받아오는 DTO로 수정했다.
그리고, Service에서 목록조회 DTO의 값만 가져오도록 한뒤, List를 만들어 출력하도록 했다.
결과는?
성공이다.
그전에 고민했었던 list의 이름도 list를 받아 list로 출력하는게 아닌, 새로 list를 만들어 출력하는것이기때문에 보이지 않는다.
해놓고 생각해보니 DTO를 거쳐 출력하는 과정이 이전 팀프로젝트때 했던 Entity를 거쳐 저장하고, Entity를 거쳐 출력하는것과 다르지 않은데 DTO에서 왜 고민을 했나 싶다.