MapStruct — это процессор аннотаций Java, предназначенный для создания типобезопасных и высокопроизводительных преобразователей для классов Java-компонентов, включая поддержку записей Java 16+. Автоматизируя создание сопоставлений, 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 работает в сборках командной строки (обычный Javac, через Maven, Gradle, Ant и т. д.) и IDE.
Для Eclipse в разработке находится специальный плагин (см. https://github.com/mapstruct/mapstruct-eclipse). Это выходит за рамки возможностей обработчика аннотаций, обеспечивая поддержку содержимого для атрибутов аннотаций, быстрые исправления и многое другое.
Для IntelliJ плагин доступен на торговой площадке IntelliJ (см. https://plugins.jetbrains.com/plugin/10036-mapstruct-support).
Для проектов на основе Maven добавьте следующее в свой POM-файл, чтобы использовать MapStruct (зависимости доступны в 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 для своей сборки. Java 11 требуется для сборки MapStruct из исходного кода. Чтобы собрать полный проект, запустите
./mvnw clean install
из корня каталога проекта. Чтобы пропустить модуль распространения, запустите
./mvnw clean install -DskipDistribution=true
MapStruct использует процессор аннотаций драгоценных камней для создания драгоценных камней сопоставления для своих собственных аннотаций. Поэтому для плавной интеграции в IDE необходимо включить обработку аннотаций.
Убедитесь, что у вас установлена как минимум IntelliJ 2018.2.x (необходимо, поскольку поддержка annotationProcessors
из maven-compiler-plugin
находится в этой версии). Включить обработку аннотаций в IntelliJ (сборка, выполнение, развертывание -> компилятор -> процессоры аннотаций).
Убедитесь, что у вас установлен плагин m2e_apt.
MapStruct распространяется по лицензии Apache версии 2.0 («Лицензия»); вы не можете использовать этот проект, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу https://www.apache.org/licenses/LICENSE-2.0.