MapStruct は、Java 16 以降のレコードのサポートを含む、Java Bean クラス用のタイプセーフで高性能のマッパーを生成するように設計された Java アノテーション プロセッサです。 MapStruct はマッピングの作成を自動化することで、面倒でエラーが発生しやすい手動コーディングの必要性を排除します。このジェネレーターは、適切なデフォルトと組み込み型変換を提供し、標準マッピングを簡単に処理できるようにすると同時に、カスタム構成や特殊なマッピング動作に対する柔軟性も提供します。最新の Java プロジェクトへのシームレスな統合により、MapStruct は従来の Bean、レコード、さらには複雑な階層の間でマッピングできるため、多様な Java アプリケーションに適応可能なツールになります。
実行時に動作するマッピング フレームワークと比較して、MapStruct には次の利点があります。
2 つの型間のマッピングを作成するには、次のようにマッパー インターフェイスを宣言します。
@ 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 License バージョン 2.0 (「ライセンス」) に基づいてライセンス供与されています。ライセンスに準拠する場合を除き、このプロジェクトを使用することはできません。ライセンスのコピーは https://www.apache.org/licenses/LICENSE-2.0 で入手できます。