개발을 잘하고 싶은 개발자

[Lombok] @Builder와 @NoArgsConstructor 같이 사용하기 본문

Backend/Java

[Lombok] @Builder와 @NoArgsConstructor 같이 사용하기

_소피아 2021. 8. 16. 03:56

참고 https://projectlombok.org/features/Builder

https://projectlombok.org/features/constructor

 @Builder
@NoArgsConstructor를 같이 사용하면

@Data
@Builder
@NoArgsConstructor
@Entity
@Table(name = "TEST")
public class test {
    @Id
    private long seq;
    private String n1;
    private String n2;
}

이렇게 사용하면 아래와 같은 오류를 출력한다

error: constructor OrderUpload in class OrderUpload cannot be applied to given types;
@Builder
^
  required: no arguments
  found: long,String,String
  reason: actual and formal argument lists differ in length

출처 https://precioustar.tistory.com/63

https://yuja-kong.tistory.com/99

원인

@Builder를 사용 시 @NoArgsConstructor 어노테이션을 함께 사용하면
모든 멤버 변수를 받는 생성자가 없어 오류를 반환한다

일부 멤버변수만 갖는 생성자 함수만 존재할 경우에도 같은 에러가 나타난다.

해결

@AllArgsConstructor 도 함께 달아주거나 모든 필드를 가지는 생성자를 손수 만들어 주면 된다.

@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MyName {
    private String first;
    private String last;
}

  .. 또는 ..

// @Getter @Setter 등등
@Builder
@NoArgsConstructor
public class MyName {
    private String first;
    private String last;

    MyName(String first, String last) { ... }
}