[Mapstruct] Setter에서 Builder로 변경할 때 NoSuchMethodError

귀찮Lee·2023년 3월 3일
0

◎ 문제 상황

  • Mapstruct에서 사용하는 Entity의 Setter를 제거하고 Builder를 사용해 주었다.
  • Mapstruct에서 자동으로 만들어주는 MapperImpl 파일이 변경되지 않아 NoSuchMethodError가 발생했다.
  • java를 build하여 사용할 때는 Entity가 변경된 Builder에 맞추어 MapperImpl 파일을 만들었다.

◎ Mapstruct 구현 방법

  • 우선 순위가 높은 순으로 구현함
    • Builder 패턴이 적용되어 있는 경우
    • @AllArgsConstructor 가 있는 경우 (모든 필드의 파라미터를 가지는 생성자)
    • 기본 생성자가 포함되어 있는 경우, 2번이 제역할을 하지 못함
      setter 메서드가 있는 경우

◎ 해결 방법

  • 이전에 유사한 문제를 겪은 적이 있어 그때 썻던 글을 참고하였다. (Blog)
    • 참고 자료와 똑같이 Build.gradle을 작성하여 문제가 해결되었다.
    • lombok-mapstruct-binding 의존성을 추가하였다.
    dependencies {
        implementation 'org.mapstruct:mapstruct:1.5.3.Final'
        implementation 'org.projectlombok:lombok:1.18.24'
        implementation 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
        annotationProcessor "org.projectlombok:lombok:1.18.24"
        annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
        annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
    }
profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글