MapStruct 사용 주의 사항

uijin kim·2023년 7월 16일
0

DTO <-> Entity 변환을 위해 자주 사용하는 MapStruct를 사용하며 겪은 주의 사항들을 정리

1. MapStruct는 Getter, Setter, Builder 기반으로 동작

MapStruct가 클래스간 매핑 코드를 만들때 타겟 클래스의 Getter, Setter를 기반으로 코드를 생성한다.
다만 MapStruct 사용을 위해 클래스에 Setter를 만드는것이 꺼림칙 하다면, Builder로 대체할 수 있다ㅡ.

2. Spring에서 Mapper 생성시 @Mapper 옵션으로 componentModel = "spring" 선언으로 해당 Mapper가 Bean으로 등록될 수 있도록 해야 동작한다.

@Mapper(componentModel = "spring")
public interface MemberMapper {
  MemberMapper INSTANCE = Mappers.getMapper(MemberMapper.class);

  MemberEntity toMemberEntity(MemberRegistDto registDto);
  MemberResult toResult(MemberEntity memberEntity);
}

3. Annotaion Processer 활성화

IDE는 MapStruct 코드 생성을 올바르게 처리하지 못할 수 있다.
IntelliJ IDEA와 같은 IDE를 사용하는 경우, "Annotation Processors" 설정을 확인하여 MapStruct를 활성화해야 할 수 있다.
다음은 IntelliJ IDEA에서 Annotation Processors 설정을 확인하는 방법이다.

  • Preferences(또는 Settings)로 이동
  • Build, Execution, Deployment(또는 Build Tools) 섹션에서 Compiler를 선택
  • Annotation Processors 탭을 선택
  • "Enable annotation processing" 옵션을 확인하고 활성화되어 있는지 확인
profile
느리더라도, 꾸준하게

0개의 댓글