Back-End/Spring

MapStruct 라이브러리 사용법

쩡류 2022. 8. 29. 12:59
728x90

Mastruct 라이브러리는 entityToDto 작업을 편리하게 진행 해 준다.

 

DI 프레임워크를 사용하지 않는 경우에도 사용할 수 있으며,

 

Spring과 같은 DI 프레임워크를 사용하면, 인터페이스만 정의 해 두면 빌드시점에 구현체를 만들어 준다.

 

해당 구현체는 인터페이스에 정의해 둔 정보를 기반으로  매핑 메서드들이 생성된다.

 

 

다음과 같이 매퍼를 작성 해 두면, 빌드 폴더에 구현체가 생성이 된다.

 

1. 특정 Entity를 받아서 특정 Dto로 변환하고자 할 때

 

=> 가장 기본적인 사용 용도이며, 위 그림에서 아래 2개의 메서드처럼 사용하면 된다.

 

2. 특정 Entity List를 받아서 특정 Dto List로 변환하고자 할 때

 

=> 첫 번째 메서드 정의와 같다. 자체적으로 Entity to Dto 메서드 구현체를 생성 해 준다. 단, 매핑 타겟의(여기서는 Dto) 내부 클래스의 매핑 메서드가 존재 하지 않는 경우, 예를 들어 (위의 그림에서는 존재하긴 하지만) GetAllItemInquiryResponseDto.ItemInquiry 내부의 ItemInquiryImage에 대한 매핑 함수가 없을 경우, 에러를 발생시킨다.

 

 

 

* 유의사항

 

1. primitive type은 매핑이 안 된다. 따라서, Wrapper 클래스를 사용해야 한다.