Home [Spring] Mapper / Mapstruct
Post
Cancel

[Spring] Mapper / Mapstruct

Mapper

Mapper 필요 이유

Mapper 클래스 구현

1
2
3
4
5
6
7
8
9
@Component
public class MemberMapper {
    public Member memberPostDtoToMember(MemberPostDto memberPostDto) {
        return new Member(0L,
                memberPostDto.getEmail(),
                memberPostDto.getName(),
                memberPostDto.getPhone());
    }
}

MapStruct

MapStruct

  • Java Bean 규약을 지키는 객체들 간의 변환 기능을 제공하는 매퍼(Mapper) 구현 클래스를 자동으로 생성해주는 코드 자동 생성기

MapStruct의 필요 이유

  • 어떤 도메인 업무 기능이 늘어날때 마다 개발자가 일일이 수작업으로 매퍼(Mapper) 클래스를 만드는 것은 비효율적
  • MapStruct가 매퍼 클래스를 자동으로 구현해줌으로 개발 생산성 향상

MapStruct 프레임워크 추가

1
2
3
4
5
6
dependencies {
		...
		...
		implementation 'org.mapstruct:mapstruct:1.4.2.Final'
		annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
}

MapStruct 기반 Mapper 인터페이스 정의

1
2
3
4
5
6
7
@Mapper(componentModel = "spring") // componentModel = "spring" 을 지정하면 Spring Bean 등록
public interface MemberMapper {
  Member memberPostDtoToMember(MemberPostDto memberPostDto);
  Member memberPatchDtoToMember(MemberPatchDto memberPatchDto);
  MemberResponseDto memberToMemberResponseDto(Member member);
  // 변경_후_객체 메서드명 (변경_전_객체 변경전객체)
}
  • 실제로 구현된 객체는 Gradle의 build task를 실행 시 자동 생성
    • IntelliJ IDE 좌측 Project 탭 > 프로젝트명 > build 디렉토리 내에 Mapper 인터페이스가 위치한 패키지 안에 생성
This post is licensed under CC BY 4.0 by the author.