08182021-08192021
airbnb 프로젝트에서 oauth로 회원가입 구현 중에 restTemplate을 쓰려고 찾아보니 RestTemplate은 Spring 5.0 이후로 유지만 되고 향후 deprecate 될 예정이라고 한다. WebClient를 권장한다고.
@Data
= @Getter
+ @Setter
+ @RequiredArgsConstructor
+ @ToString
+ @EqualsAndHashCode
When using @Data
on a class that extends another, equals
and hashCode
need to be generated on the super class in order to get the fields in super class on the sub class's equals
and hashCode
. To do this, set callSuper
attribute to true on @EqualsAndHashCode
.
callSuper
가 true가 아닐 때(by default)는 서브 클래스의 필드만 같으면 수퍼 클래스의 필드가 달라도 equals
는 true를 반환한다.
class Super {
String name;
Super(String name) {
this.name = name;
}
}
@EqualsAndHashCode
class Sub extends Super {
String nickname;
Sub(String name, String nickname) {
super(name);
this.nickname = nickname;
}
}
@Test
void test() {
Sub sub = new Sub("name", "nickname");
Sub sub2 = new Sub("name2", "nickname");
// pass when callSuper = true, fail when callSuper = false
assertThat(sub).isEqualTo(sub2);
}