본문 바로가기

Spring

[Spring] Mapper / Mapstruct

Mapper

Mapper 필요 이유

Mapper 클래스 구현

@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 프레임워크 추가

dependencies {
		...
		...
		implementation 'org.mapstruct:mapstruct:1.4.2.Final'
		annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
}

 

MapStruct 기반 Mapper 인터페이스 정의

@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 인터페이스가 위치한 패키지 안에 생성

'Spring' 카테고리의 다른 글

[Spring] JDBC  (0) 2022.12.21
[Spring] 예외 처리  (0) 2022.12.21
[Spring] Rest Client  (2) 2022.12.21
[Spring] HTTP Headers  (1) 2022.12.21
[Spring] Controller  (0) 2022.12.19
Recent Posts
Popular Posts
Recent Comments