MapStruct는 Java 16+ 레코드 지원을 포함하여 Java Bean 클래스에 대해 유형이 안전한 고성능 매퍼를 생성하도록 설계된 Java 주석 프로세서입니다. MapStruct는 매핑 생성을 자동화함으로써 지루하고 오류가 발생하기 쉬운 수동 코딩의 필요성을 제거합니다. 생성기는 합리적인 기본값과 내장된 유형 변환을 제공하므로 표준 매핑을 손쉽게 처리하는 동시에 사용자 정의 구성이나 특수 매핑 동작에 대한 유연성도 제공합니다. 최신 Java 프로젝트에 원활하게 통합되는 MapStruct는 기존 빈, 레코드, 복잡한 계층 구조 사이를 매핑할 수 있어 다양한 Java 애플리케이션에 적합한 도구가 됩니다.
런타임에 작동하는 매핑 프레임워크와 비교하여 MapStruct는 다음과 같은 이점을 제공합니다.
두 유형 간의 매핑을 만들려면 다음과 같이 매퍼 인터페이스를 선언하세요.
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
컴파일 타임에 MapStruct는 이 인터페이스의 구현을 생성합니다. 생성된 구현은 소스와 대상 개체 간의 매핑을 위해 일반 Java 메서드 호출을 사용합니다. 즉, 리플렉션이 포함되지 않습니다. 기본적으로 속성은 소스와 대상의 이름이 동일한 경우 매핑되지만 @Mapping
및 기타 주석을 사용하여 이 속성과 기타 여러 측면을 제어할 수 있습니다.
MapStruct에는 Java 1.8 이상이 필요합니다.
MapStruct는 명령줄 빌드(Maven, Gradle, Ant 등을 통한 일반 javac) 및 IDE에서 작동합니다.
Eclipse의 경우 전용 플러그인이 개발 중입니다(https://github.com/mapstruct/mapstruct-eclipse 참조). 주석 프로세서로 가능한 것 이상을 제공하여 주석 속성, 빠른 수정 등에 대한 콘텐츠 지원을 제공합니다.
IntelliJ의 경우 IntelliJ 마켓플레이스에서 플러그인을 사용할 수 있습니다(https://plugins.jetbrains.com/plugin/10036-mapstruct-support 참조).
Maven 기반 프로젝트의 경우 MapStruct를 사용하려면 POM 파일에 다음을 추가하세요(종속성은 Maven Central에서 사용 가능).
...
< properties >
< org .mapstruct.version>1.6.3</ org .mapstruct.version>
</ properties >
...
< dependencies >
< dependency >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct</ artifactId >
< version >${org.mapstruct.version}</ version >
</ dependency >
</ dependencies >
...
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-compiler-plugin</ artifactId >
< version >3.13.0</ version >
< configuration >
< source >17</ source >
< target >17</ target >
< annotationProcessorPaths >
< path >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct-processor</ artifactId >
< version >${org.mapstruct.version}</ version >
</ path >
</ annotationProcessorPaths >
</ configuration >
</ plugin >
</ plugins >
</ build >
...
Gradle의 경우 다음 줄을 따라 뭔가가 필요합니다.
plugins {
.. .
id " com.diffplug.eclipse.apt " version " 3.26.0 " // Only for Eclipse
}
dependencies {
.. .
implementation ' org.mapstruct:mapstruct:1.6.3 '
annotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 '
testAnnotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 ' // if you are using mapstruct in test code
}
.. .
종속성 관리 도구를 사용하지 않는 경우 릴리스 페이지에서 배포 번들을 얻을 수 있습니다.
MapStruct에 대한 자세한 내용은 프로젝트 홈페이지를 참조하세요. 참조 문서에서는 제공된 모든 기능을 자세히 다루고 있습니다. 도움이 필요하면 토론에서 요청하세요.
MapStruct는 빌드에 Maven을 사용합니다. 소스에서 MapStruct를 빌드하려면 Java 11이 필요합니다. 전체 프로젝트를 빌드하려면 다음을 실행하세요.
./mvnw clean install
프로젝트 디렉토리의 루트에서. 배포 모듈을 건너뛰려면 다음을 실행하세요.
./mvnw clean install -DskipDistribution=true
MapStruct는 gem 주석 프로세서를 사용하여 자체 주석에 대한 매핑 gem을 생성합니다. 따라서 IDE 내 원활한 통합을 위해서는 주석 처리를 활성화해야 합니다.
IntelliJ 2018.2.x 이상이 있는지 확인하세요( maven-compiler-plugin
의 annotationProcessors
지원이 해당 버전에서 제공되므로 필요함). IntelliJ에서 주석 처리 활성화(빌드, 실행, 배포 -> 컴파일러 -> 주석 프로세서)
m2e_apt 플러그인이 설치되어 있는지 확인하세요.
MapStruct는 Apache 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여됩니다. 라이센스를 준수하는 경우를 제외하고는 이 프로젝트를 사용할 수 없습니다. https://www.apache.org/licenses/LICENSE-2.0에서 라이센스 사본을 얻을 수 있습니다.