MapStruct情報
MapStructとは
MapStructは、JavaBean間のマッピング実装を簡素化するコードジェネレータです。アノテーションにより自動生成されるマッピングコードはプレーンなメソッド呼び出しを利用するため、リフレクションなどにくらべて高速でタイプセーフに動作し、動作も理解しやすいです。
ほとんどの多層アプリケーションでは、異なるオブジェクトモデル(EntityやDtoなど)間でマッピングを行う必要があります。このようなマッピングコードの作成は退屈な上に、エラーが発生しやすい作業です。MapStructでは、このようなマッピング作業を可能な限り自動化することを目的としています。他のマッピングフレームワークとは異なり、コンパイル時にBeanマッピングクラスを生成されるため、高いパフォーマンスが保証され、開発者による迅速なフィードバックと、エラーチェックが可能となっています。
MapStructは、Javaコンパイラにプラグインされるアノテーションプロセッサであり、コマンドラインビルド(Maven、Gradle、Antなど)や好みのIDE(Eclipse、IntelliJ IDEA、NetBeansなど)から利用可能です。
主な特徴
マッパー定義 |
マッパーを作成するにはアノテーションを付与するだけです。異なるプロパティへのマッピング、複数ソースからのマッピング、ネストされたBeanのマッピング、既存のインスタンスへのマッピングなども可能です。 |
---|---|
マッパー参照 |
DI Frameworkを使用していない場合は、org.mapstruct.factory.Mappersクラス経由で Mapper インスタンスを取得可能です。CDIやSpring Frameworkを使用している場合は、適切コンポーネントモデルを指定したアノテーションを付与することで、マッパーをインジェクション可能です。 |
データ型変換 |
マッピングでは属性の型が異なるケースがあります。MapStructでは、多くの場合、型変換を自動的に処理します。マッピングが単純ではない場合は、カスタムマッピングの追加や手動実装したマッパーを利用することが可能です。 |
コレクションのマッピング |
コレクションのマッピングはソースコレクションを反復処理して各要素をターゲットコレクションにマッピングします。型が異なる場合、変換のフォーマットを指定することもできます。また、コレクションのマッピング戦略を4つのタイプから指定することが可能です。 |
Streamのマッピング |
Streamのマッピングでは、ソース型とターゲット型に応じて、Iterable インタフェースか配列に暗黙的に変換可能です。 |
列挙型のマッピング |
列挙型同士、列挙型からString、Stringから列挙型といったマッピングが可能です。名前変換のルール(サフィックス、プレフィックス、大文字小文字変換など)を指定したカスタムマッピングも可能です。 |
オブジェクトファクトリ |
デフォルトでは、ターゲットのインスタンスの生成はコンストラクターが利用されます。マッパーアノテーションのusesを利用することで、ターゲットとしてファクトリメソッドで生成したインスタンスを利用することが可能です。 |
高度なマッピングオプション |
高度なマッピング機能では、
などが利用可能です。 |
マッピング再利用 |
既に定義されているマッピングを利用して、
が利用可能です。 |
マッピングカスタマイズ |
などが利用可能です。 |
MapStruct SPI |
MapStruct SPIを実装することで、
などが利用可能です。 |
サードパーティAPI統合 |
MapStruct は、サードパーティのライブラリから既に定義されているアノテーションを操作できる柔軟性を備えています。しかし、類似機能を持っているlombokと連携する場合は、バージョンの制約、アノテーションプロセッサの調整が必要なので注意が必要です。 |
参考: https://mapstruct.org/documentation/stable/reference/html/
類似プロダクト
類似の機能をもつOSSとしては、
- Commons BeanUtils
- Dozer
- JMapper
- Lombok
- ModelMapper
- Orika
などがあります。
動作環境
MapStructのライセンス
MapStructは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
製品ダウンロード
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。