공개 API를 사용할 때 어떤 주소값을 사용하고 있는지
https://developers.kakao.com/docs/latest/ko/kakaotalk-social/rest-api
이런 곳
상속 관계라서 부모 클래스인 User를 참고해서 인스턴스를 만들어야 하는데,
User에 기본 생성자가 존재하지 않는다.
부모 클래스인 User에 @NoArgsConstructor 를 추가한다.
모든 클래스에 대한 기본 생성자를 자동으로 생성해주는 어노테이션이다
그러면 오류가 사라진다.
(User에 직접 기본생성자 public User() {} 를 추가해주어도 상관없다.)
캡쳐에는 없지만 UserV2에도 기본 생성자를 추가해준다.
//개별 조회
//Get : /users/1 or /users/10 ... -> String
// GET / admin/users/1 -> /admin/v1/users/1 (버전관리
@GetMapping("/v1/users/{id}")
public MappingJacksonValue retrieveUserv1(@PathVariable int id) {
User user = service.findOne(id);
if (user == null) {
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
//어떤 bean을 대상으로 필터를 설정할 것인지
SimpleBeanPropertyFilter filter =
SimpleBeanPropertyFilter.filterOutAllExcept("id", "name", "joinDate", "ssn");
FilterProvider filters = new SimpleFilterProvider().addFilter("UserInfo", filter);
MappingJacksonValue mapping = new MappingJacksonValue(user);
mapping.setFilters(filters);
return mapping;
}
//개별 조회
//Get : /users/1 or /users/10 ... -> String
// GET / admin/users/1 -> /admin/v1/users/1 (버전관리
@GetMapping("/v2/users/{id}")
public MappingJacksonValue retrieveUserv2(@PathVariable int id) {
User user = service.findOne(id);
if (user == null) {
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
// User를 copy해서 -> User2에 담는다
UserV2 userV2 = new UserV2();
BeanUtils.copyProperties(user, userV2); // id, name, joinDate, password, ssn
userV2.setGrade("VIP"); // grade
//어떤 bean을 대상으로 필터를 설정할 것인지
SimpleBeanPropertyFilter filter =
SimpleBeanPropertyFilter.filterOutAllExcept("id", "name", "joinDate", "grade");
FilterProvider filters = new SimpleFilterProvider().addFilter("UserInfoV2", filter);
MappingJacksonValue mapping = new MappingJacksonValue(userV2);
mapping.setFilters(filters);
return mapping;
}