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

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

Barbara Streisand
发布: 2024-11-24 19:38:49
原创
822 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板