欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lombok和MapStruct整合詳情

 更新時間:2022年05月22日 08:24:33   作者:??SITING????  
這篇文章主要介紹了Lombok和MapStruct整合詳情,文章基于Java的相關(guān)資料展開詳細內(nèi)容,需要的小伙伴可以參考一下

一、流程

1、安裝Lombok插件

(2020.0.4之后版本的IDEA已內(nèi)置Lombok,老版本的請自行下載插件)

2、啟用注解處理器

打開setting -> enable annotation processor (啟用注解處理器)

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

@Data                    //生成Getter 、Setter 、ToString 、ToString 、EqualsAndHashCode
@AllArgsConstructor      //全參構(gòu)造
@NoArgsConstructor       //無參構(gòu)造
@SuperBuilder            //構(gòu)建器,可以鏈式構(gòu)建對象

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

正常來說到這就結(jié)束了,但是。。。在Lombok和MapStruct一起使用時就會有一些沖突

說明一下:

Lombok和MapStruct都是用來簡化Java代碼的組件,它可以通過AnnotationProcessor在編譯時自動生成代碼,簡化了我們?nèi)粘i_發(fā)。

同時,由于是編譯時生成的class文件,從安全性和性能角度考慮也會比運行時的工具好很多,例如BeanUtil.copy()

二、原理

自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運行的時候得到調(diào)用。 lombok本質(zhì)上就是這樣的一個實現(xiàn)了"JSR 269 API"的程序。在使用javac的過程中,它產(chǎn)生作用的具體流程如下:

  • javac對源代碼進行分析,生成一棵抽象語法樹(AST) 
  • 運行過程中調(diào)用實現(xiàn)了"JSR 269 API"的lombok程序 
  • 此時lombok就對第一步驟得到的AST進行處理,找到@Data注解所在類對應(yīng)的語法樹(AST),然后修改該語法樹(AST),增加getter和setter方法定義的相應(yīng)樹節(jié)點
  •  javac使用修改后的抽象語法樹(AST)生成字節(jié)碼文件 

三、原因

因為他們他們都是編譯時通過AnnotationProcessor生成的class文件,然后MapStruct會用到對象中的get、set方法,然后get、set方法又需要lombok來生成。所以我們需要空著這兩者工作順序。

四、解決辦法

 lombok 1.18.16之前,添加path

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

本著用新不用舊的想法我選了第二種

到此這篇關(guān)于Lombok和MapStruct整合詳情的文章就介紹到這了,更多相關(guān)Lombok和MapStruct內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot接收前端參數(shù)的四種方式圖文詳解

    springboot接收前端參數(shù)的四種方式圖文詳解

    Spring Boot可以通過多種方式接收前端傳遞的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot接收前端參數(shù)的四種方式,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Spring自動注入失敗的解決方法

    Spring自動注入失敗的解決方法

    這篇文章主要介紹了Spring自動注入失敗的解決方法,幫助大家更好的理解和學習使用Spring框架,感興趣的朋友可以了解下
    2021-05-05
  • 自定義log4j日志文件命名規(guī)則說明

    自定義log4j日志文件命名規(guī)則說明

    這篇文章主要介紹了自定義log4j日志文件命名規(guī)則說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java設(shè)計模式筆記之Builder模式

    Java設(shè)計模式筆記之Builder模式

    建造者模式是日常開發(fā)中比較常見的設(shè)計模式,它的主要作用就是將復雜事物創(chuàng)建的過程抽象出來,該抽象的不同實現(xiàn)方式不同,創(chuàng)建出的對象也不同,這篇文章主要給大家介紹了關(guān)于Java設(shè)計模式筆記之Builder模式的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Java使用wait/notify實現(xiàn)線程間通信上篇

    Java使用wait/notify實現(xiàn)線程間通信上篇

    wait()和notify()是直接隸屬于Object類,也就是說所有對象都擁有這一對方法,下面這篇文章主要給大家介紹了關(guān)于使用wait/notify實現(xiàn)線程間通信的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • jdk17?SpringBoot?JPA集成多數(shù)據(jù)庫的示例詳解

    jdk17?SpringBoot?JPA集成多數(shù)據(jù)庫的示例詳解

    這篇文章主要介紹了jdk17?SpringBoot?JPA集成多數(shù)據(jù)庫的示例代碼,包括配置類、請求攔截器、線程上下文等相關(guān)知識,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 阿里開源Java診斷工具神器使用及場景詳解

    阿里開源Java診斷工具神器使用及場景詳解

    這篇文章主要為大家介紹了阿里開源Java診斷工具神器使用及場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • java 數(shù)據(jù)結(jié)構(gòu)二叉樹的實現(xiàn)代碼

    java 數(shù)據(jù)結(jié)構(gòu)二叉樹的實現(xiàn)代碼

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)二叉樹的實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • MyBatis框架關(guān)聯(lián)映射實例詳解

    MyBatis框架關(guān)聯(lián)映射實例詳解

    這篇文章主要介紹了MyBatis框架關(guān)聯(lián)映射,關(guān)系映射主要處理復雜的SQl查詢,如子查詢,多表聯(lián)查等復雜查詢,應(yīng)用此種需求時可以考慮使用,需要的朋友可以參考下
    2022-11-11
  • Java線程同步、同步方法實例詳解

    Java線程同步、同步方法實例詳解

    本篇文章主要通過實例介紹了Java線程:線程的同步-同步方法,需要的朋友可以參考下
    2017-04-04

最新評論