결론 : DTO를 만들어서 반환시키자.
이번 예제는 회원의 이름만 반환하는 경우로 진행
@Data
@AllArgsConstructor
static class MemberDto{
private String name;
}
memberDto를 만들어주고
@GetMapping("api/v2/members")
public Result memberV2(){
List<Member> members = memberService.findMembers();
//members를 MemberDto로 바꿔준다.
List<MemberDto> collect = members.stream().map(m
-> new MemberDto(m.getName())).collect(Collectors.toList());
return new Result(collect);
}
@Data
@AllArgsConstructor
public class Result<T>{
private T data;
}
ArrayList를 반환하는게아닌 Result라는 껍데기 클래스로 반환시켜줌.
제네릭 클래스로 만들어 둠으로써 반환되는 데이터 타입이 DTO 클래스 인것을 명시적으로 나타낼 수있게된다.
@GetMapping("api/v1/members")
public List<Member> membersV1(){
return memberService.findMembers();
}