MapStruct と Lombok は、Java コードの生産性と保守性を向上させるために使用できる 2 つの人気のある Java ライブラリです。ただし、一緒に使用すると、注釈処理の競合によりコンパイル エラーが発生する場合があります。この記事では、この問題の解決策を提供し、MapStruct と Lombok がシームレスに連携するように適切に設定する方法を説明します。
問題
MapStruct と Lombok を一緒に使用する場合場合、コンパイル プロセスが失敗し、次のようなエラー メッセージが表示される場合があります。
Unknown property "id" in result type com.vg.once.dto.OneDto. Did you mean "null"?
このエラーが発生する理由は次のとおりです。 MapStruct は DTO クラスのプロパティのゲッターとセッターを見つけることを想定していますが、Lombok は代わりに合成アクセサーとミューテーターを生成します。その結果、MapStruct はエンティティ クラスのプロパティを DTO クラスの対応するプロパティにマップできません。
解決策
この問題を解決するには、次のようにします。 Lombok の合成アクセサーとミューテーターを使用するように MapStruct に指示する必要があります。これは、次のアノテーションを Mapper インターフェイスに追加することで実行できます。
@Mapper(config = LombokProcessorConfig.class)
LombokProcessorConfig クラスは、Lombok の合成アクセサーとミューテーターを使用するように MapStruct に指示する組み込み MapStruct 構成クラスです。
例
これはLombok の合成アクセサーとミューテーターを使用する Mapper インターフェイスの例:
@Mapper(config = LombokProcessorConfig.class) public interface OneMapper { @Mapping(target="id", source="one.id") OneDto createOne (One one); }
追加の考慮事項
LombokProcessorConfig アノテーションの追加に加えて、他にもいくつかの事項があります。 MapStruct と Lombok を使用する場合は考慮する必要があります一緒に:
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> <classifier>ap</classifier> </dependency>
結論
これらの手順に従って、MapStruct を使用できます。と Lombok を連携して、Java コードの生産性と保守性を向上させます。
以上がJava で MapStruct と Lombok を一緒に使用する場合のコンパイル エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。