Mapper 필요 이유
Mapper 클래스 구현
@Component
public class MemberMapper {
public Member memberPostDtoToMember(MemberPostDto memberPostDto) {
return new Member(0L,
memberPostDto.getEmail(),
memberPostDto.getName(),
memberPostDto.getPhone());
}
}
MapStruct
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를 실행 시 자동 생성
Project 탭
> 프로젝트명
> build
디렉토리 내에 Mapper 인터페이스가 위치한 패키지 안에 생성