深入理解lombok
一、Lombok是什么
? ? ? ?Lombok項(xiàng)目是一種自動接通你的編輯器和構(gòu)建工具的一個Java庫,是幫助我們編寫getter或者equals方法的一個“工具”,不需要我們再寫getter、setter或者equals方法。其實(shí)他的魅力并不在于幫助我們簡單的編寫對應(yīng)的getter或者更多的方法,還有一點(diǎn)在于,當(dāng)我們的字段發(fā)生改變時,lombok也會對相應(yīng)的getter方法進(jìn)行改變。
引入依賴即可使用:
二、為什么要在自己的項(xiàng)目中使用Lombok
? ? ? ?要回答這個問題,僅僅知道什么是Lombok是不夠的。在講解原理之前我想再提一點(diǎn) ,這也是為什么要使用Lombok的關(guān)鍵所在:根據(jù)Lombok的使用規(guī)則,如果想要使用Lombok就需要刪除在項(xiàng)目中(JavaBean)存在的已經(jīng)生成的getter方法setter方法以及equals和hash方法,當(dāng)然Lombok也提供了對打印日志的處理。這樣在使用Lombok以后就會大大減少項(xiàng)目中的代碼量,同時由于Lombok有自動修改的功能,這也提供了項(xiàng)目中代碼的執(zhí)行效率。
綜上所述,使用Lombok的兩點(diǎn)主要原因就是:
(1)、簡化冗余的JavaBean代碼;
(2)、大大提高JavaBean中方法的執(zhí)行效率;
三、Lombok實(shí)現(xiàn)原理
? ? ? ? Lombok實(shí)現(xiàn)了JSR 269 API規(guī)范,javac在Java6開始支持這一規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運(yùn)行的時候得到調(diào)用,那么Lombok在編譯時使用的就是javac,具體流程如下:
? ? ? ?首先是項(xiàng)目的源代碼文件,在經(jīng)過編譯處理以后,lombok會使用自己的抽象語法樹去進(jìn)行注解的匹配,如果在項(xiàng)目中的某一個類中使用了lombok中的注解,那么注解編譯器就會自動去匹配項(xiàng)目中的注解對應(yīng)到在lombok語法樹中的注解文件,并經(jīng)過自動編譯匹配來生成對應(yīng)類中的getter或者setter方法,達(dá)到簡化代碼的目的。
四、Lombok注解詳解
Lombok主要常用的注解有
-
@Data注解:這個注解包含范圍最廣,它包含@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode注解;
-
@NoArgsConstructor注解:生成對應(yīng)的無參構(gòu)造方法;
-
@AllArgsConstructor注解:生成對應(yīng)的有參構(gòu)造方法;
-
@Slf4j注解:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了slf4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調(diào)用info方法即可,其實(shí)就是替你生成一個log屬性
- @Log4j:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了log4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調(diào)用info方法即可;
- @Accessors(chain = true) 生成的setter方法中返回用this代替void
五、使用Lombok可能需要注意的地方
(1)、在使用Lombok時,你的編輯器可能會報錯,這時請?jiān)谀愕腎DE中安裝Lombok插件(如果使用的Idea則直接搜索Lombok插件,選擇星級最高的,直接安裝就是,其他Ide類同)。
總結(jié)
以上是生活随笔為你收集整理的深入理解lombok的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea(三)最值得安装的几款插件
- 下一篇: 学习springboot基础必备