❗오류

ToDoApp을 만들어보던 중

Mapper 인터페이스에 MapStruct를 적용하여 mapperImpl을 구현하려고 하니

다음과 같은 오류가 발생하며, 빈 DTO와 Entity를 반환하였다.

reason: actual and formal argument lists differ in length

 

이와 비슷한 오류는 전에도 발생하였으며 Getter와 Setter애너테이션을 삭제하고 직접 코드로 작성하여 해결한 적이 있었다.  이번에는 좀 더 근본적인 원인을 찾아 해결해 보고 싶어 구글링을 해보았다.

 

 

❗원인

Mapstruct는 우선 순위가 높은 순으로 구현함

MapStruct에서 @AllArgsConstructor, @Setter를 사용하는데 있어 Lombok이 정상적으로 작동하지 않고 있다고 추측

  • build.gradle 에서 dependencies는 위에서부터 순서대로 실행된다
  • Lombok이 MapStruct보다 윗줄에 있어야 함

 

👏🏻해결방법

따라서 다음과 같이 lombok의 위치를 mapstruct 위로 올려주었다!

 

 

 

MapperImpl이 정상적으로 구현되며 해결완료!

 

 

 

 

 

😎그 외 시도했던 방법들

먼저 Setting -> Annotation Processors -> Enable annotation processing 체크 적용 해주는 방법이었다.

그러나 해결되지 않았다.

 

다음으로 시도한것은

Setting > Build,Execution,Deployment > Build Tools > Gradle에서 

Build and run using과 Run tests using의 설정을 Gradle에서 Intellij IDEA로 바꿔주는 것이다.

역시 해결되지 않았다.

 

 

참고한 자료

https://velog.io/@gwichanlee/MapStruct-%EB%AF%B8%EC%9E%91%EB%8F%99%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0

복사했습니다!