首页 >Java >java教程 >为什么 MapStruct 无法识别 Lombok 的 @Getter 和 @Setter 注解,以及如何修复它?

为什么 MapStruct 无法识别 Lombok 的 @Getter 和 @Setter 注解,以及如何修复它?

Barbara Streisand
Barbara Streisand原创
2024-11-24 19:38:49850浏览

Why Does MapStruct Fail to Recognize Lombok's @Getter and @Setter Annotations, and How Can I Fix It?

MapStruct 与 Lombok 映射中的未知 @Getter 和 @Setter 注释

问题描述

集成 MapStruct 和 Lombok 可能会导致错误“未知属性” ...在结果类型中...”在实体和 DTO 上使用 @Getter 和 @Setter 注释时一起上课。尽管两个库的版本兼容,但还是会出现这种情况。

解决方案

出现此问题的原因是 Maven 仅使用 MapStruct 处理器,而忽略了 Lombok 处理器。要解决此问题:

选项 1:将 Lombok 依赖项添加到注释处理器路径

在 Maven 编译器插件配置中,将 Lombok 依赖项添加到annotationProcessorPaths 列表:

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${org.projectlombok.version}</version>
    </path>
    ...
</annotationProcessorPaths>

另外,对于Lombok 1.18.16及以上版本,添加以下内容路径:

<path>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-mapstruct-binding</artifactId>
    <version>0.2.0</version>
</path>

选项 2:添加 MapStruct 处理器依赖项

或者,添加 MapStruct 处理器作为依赖项并删除注释ProcessorPaths:

<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
注意:建议使用选项 1,以确保在 MapStruct 中没有引用任何内部 MapStruct 类。代码。

Intellij 配置

要在 IntelliJ 中启用注释处理,请将 MapStruct 处理器添加为提供的依赖项,因为 [IntelliJ 问题 IDEA-150621](https://youtrack.jetbrains.com /issue/IDEA-150621).

以上是为什么 MapStruct 无法识别 Lombok 的 @Getter 和 @Setter 注解,以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn