08182021-08192021

  1. airbnb 프로젝트에서 oauth로 회원가입 구현 중에 restTemplate을 쓰려고 찾아보니 RestTemplate은 Spring 5.0 이후로 유지만 되고 향후 deprecate 될 예정이라고 한다. WebClient를 권장한다고.

  2. @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);
    }