返回顶部
首页 > 资讯 > 后端开发 > Python >Lombok和MapStruct整合详情
  • 805
分享到

Lombok和MapStruct整合详情

2024-04-02 19:04:59 805人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、流程1、安装Lombok插件2、启用注解处理器二、原理三、原因四、解决办法一、流程 1、安装Lombok插件 (2020.0.4之后版本的idea已内置Lombok,老版本的

一、流程

1、安装Lombok插件

(2020.0.4之后版本的idea已内置Lombok,老版本的请自行下载插件)

2、启用注解处理器

打开setting -> enable annotation processor (启用注解处理器)

OK 完事~ 可以使用了  送上常用四件套:

@Data                    //生成Getter 、Setter 、ToString 、ToString 、EqualsAndHashCode
@AllArgsConstructor      //全参构造
@NoArgsConstructor       //无参构造
@SuperBuilder            //构建器,可以链式构建对象

可以自行在classes里看生成的代码:

正常来说到这就结束了,但是。。。在Lombok和MapStruct一起使用时就会有一些冲突

说明一下:

Lombok和MapStruct都是用来简化Java代码的组件,它可以通过AnnotationProcessor在编译时自动生成代码,简化了我们日常开发

同时,由于是编译时生成的class文件,从安全性和性能角度考虑也会比运行时的工具好很多,例如BeanUtil.copy()

二、原理

自从Java 6起,javac就支持“jsR 269 Pluggable Annotation Processing api”规范,只要程序实现了该API,就能在javac运行的时候得到调用。 lombok本质上就是这样的一个实现了"JSR 269 API"的程序。在使用javac的过程中,它产生作用的具体流程如下:

  • javac对源代码进行分析,生成一棵抽象语法树(AST) 
  • 运行过程中调用实现了"JSR 269 API"的lombok程序 
  • 此时lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
  •  javac使用修改后的抽象语法树(AST)生成字节码文件 

三、原因

因为他们他们都是编译时通过AnnotationProcessor生成的class文件,然后MapStruct会用到对象中的get、set方法,然后get、set方法又需要lombok来生成。所以我们需要空着这两者工作顺序。

四、解决办法

 lombok 1.18.16之前,添加path

 lombok 1.18.16之后,添加path,必须使用 lombok-mapstruct-binding 插件。

本着用新不用旧的想法我选了第二种

到此这篇关于Lombok和MapStruct整合详情的文章就介绍到这了,更多相关Lombok和MapStruct内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Lombok和MapStruct整合详情

本文链接: https://lsjlt.com/news/149384.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作