成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用神器Lombok優(yōu)雅編碼

_ang / 3465人閱讀

摘要:提高編碼效率使代碼更簡(jiǎn)潔消除冗長(zhǎng)代碼避免修改字段名字時(shí)忘記修改方法名提高下逼格以上就是的優(yōu)點(diǎn),當(dāng)然,的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)不止以上幾點(diǎn),使用,你可以更加優(yōu)雅高效的編輯代碼。實(shí)戰(zhàn)完成了上述準(zhǔn)備之后,就可以愉快的使用進(jìn)行編碼了。接下來(lái)是使用簡(jiǎn)化后的代碼。

Lombok介紹

近來(lái)偶遇一款擼碼神器,介紹給大家~
相信許多小伙伴都深有體會(huì),POJO類中的千篇一律的getter/setter,constructor等方法讓人寫的揪心,那么今天就有一種方法可以殘暴的解決這個(gè)問(wèn)題。
接下來(lái)為大家介紹這款神器:Lombok
以下是官方對(duì)Lombok的介紹

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
Project Lombok是一個(gè)java庫(kù),它可以自動(dòng)插入編輯器和構(gòu)建工具,為java增色。永遠(yuǎn)不要再編寫另一個(gè)getter或equals方法,使用一個(gè)注釋,您的類就有了一個(gè)功能齊全的構(gòu)建器、自動(dòng)記錄變量等等。

簡(jiǎn)而言之,Lombok實(shí)現(xiàn)的效果就是通過(guò)簡(jiǎn)單的注解來(lái)精簡(jiǎn)代碼達(dá)到消除冗長(zhǎng)代碼的目的

Lombok優(yōu)點(diǎn)及缺點(diǎn)

對(duì)Lombok有了一個(gè)基本的認(rèn)識(shí)之后,讓我們來(lái)挖掘一下它的優(yōu)缺點(diǎn)。首先看一下它的優(yōu)點(diǎn)。

提高編碼效率

使代碼更簡(jiǎn)潔

消除冗長(zhǎng)代碼

避免修改字段名字時(shí)忘記修改方法名

提高下逼格

以上就是Lombok的優(yōu)點(diǎn),當(dāng)然,Lombok的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)不止以上幾點(diǎn),使用Lombok,你可以更加優(yōu)雅高效的編輯代碼。但,俗話說(shuō)“有利必有弊”,Lombok為我們帶來(lái)便利的同時(shí)也帶來(lái)的不少小麻煩。

Lombok需要額外的環(huán)境配置(接下來(lái)為講到)

傳染性(一旦在resource包里用了lombok,別人想看源碼也不得不裝插件)

降低代碼可讀性

雖然Lombok有著不少缺點(diǎn),但總歸是利大于弊,作為一款優(yōu)秀的神器,仍然值得我們?nèi)W(xué)習(xí)。

Lombok原理

授人以魚不如授人以漁,接下來(lái)簡(jiǎn)要介紹一下Lombok的原理。

Sun公司在2005.2.1提交了JSR 269,用于支持在編譯期對(duì)annotation進(jìn)行處理,即引入了插入式注解處理API(Pluggable Annotation Processing API)。javac從java6開始支持“JSR 269 API”規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運(yùn)行的時(shí)候得到調(diào)用,而Lombok實(shí)現(xiàn)了“JSR 269 API”,在編譯時(shí),javac編譯源碼的具體流程如下:Source File -> Parse -> AST -> Annotation Processing -> Modified AST -> Analyze and Generate -> Byte Code
Lombok引入項(xiàng)目 引入Lombok jar包

在項(xiàng)目中引入Lombok的方法有很多,在此以Maven為例進(jìn)行講解,其他途徑可以參考官方網(wǎng)站https://projectlombok.org/。
打開pom.xml文件,添加以下依賴。


    org.projectlombok
    lombok
    1.16.18
    provided
IDEA/Eclipse安裝Lombok插件

在上面提到,Lombok需要額外的環(huán)境配置,此處以IDEA為例進(jìn)行講解。

第一步,打開File -> Settings -> Plugins,輸入Lombok Plugin點(diǎn)擊搜索。

第二步,重啟IDE使插件生效。

Lombok實(shí)戰(zhàn)Coding

完成了上述準(zhǔn)備之后,就可以愉快的使用Lombok進(jìn)行編碼了。編碼之前首先為大家介紹一下Lombok的基本用法。

@Data
包含了 @Getter @Setter @ToString @EqualsAndHashCode
即自動(dòng)為類生成所有g(shù)etter、setter、toString、eaquals以及hashCode方法

@Getter 為所有屬性生成public修飾的get方法
@Getter(AccessLevel.PROTECTED) 為所有屬性生成protected修飾的get方法

@Setter 為所有屬性生成public修飾的set方法
@Setter(AccessLevel.PROTECTED) 為所有屬性生成protected修飾的set方法

@NoArgsConstructor 無(wú)參構(gòu)造器
@AllArgsConstructor 生成帶有所有屬性的有參構(gòu)造器

@ToString 默認(rèn)生成帶有所有屬性的toString方法
@ToString(exclude = "column") 生成除column屬性之外的所有屬性的toString方法
@ToString(exclude = {"column1", "column2"})
@ToString(of = "column") 生成只有column屬性的toString方法
@ToString(of = {"column1", "column2"})

@EqualsAndHashCode
@EqualsAndHashCode(exclude = "column") 以column屬性之外的屬性作為是否是相同對(duì)象判斷的標(biāo)準(zhǔn)
@EqualsAndHashCode(of = "column")) 只以column屬性作為是否是相同對(duì)象判斷的標(biāo)準(zhǔn)

@Slf4j 為當(dāng)前類生成日志對(duì)象
@Log4j 為當(dāng)前類生成日志對(duì)象

接下來(lái)讓我們簡(jiǎn)單對(duì)比一下代碼。
首先是未經(jīng)簡(jiǎn)化的代碼。

public class User {
    private Integer id;

    private String username;

    private String password;

    private String email;

    private String phone;

    public User(Integer id, String username, String password, String email, String phone) {
    this.id = id;
    this.username = username;
    this.password = password;
    this.email = email;
    this.phone = phone;
    }

    public User() {
    }

    public Integer getId() {
        return id;
   }

    public void setId(Integer id) {
        this.id = id;
   }

    public String getUsername() {
        return username;
   }

    public void setUsername(String username) {
        this.username = username;
   }

    public String getPassword() {
        return password;
   }

    public void setPassword(String password) {
        this.password = password;
   }

    public String getEmail() {
        return email;
   }

    public void setEmail(String email) {
        this.email = email;
   }

    public String getPhone() {
        return phone;
   }

    public void setPhone(String phone) {
        this.phone = phone;
   }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
          User user = (User) o;
         return Objects.equals(id, user.id) &&
                Objects.equals(username, user.username) &&
                Objects.equals(password, user.password) &&
                Objects.equals(email, user.email) &&
                Objects.equals(phone, user.phone);
      }

    @Override
      public int hashCode() {
        return Objects.hash(id, username, password, email, phone, question, answer, role, createTime, updateTime);
      }
}

接下來(lái)是使用Lombok簡(jiǎn)化后的代碼。

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;

 private String username;

 private String password;

 private String email;

 private String phone;
}

Lombok的更多用法,在此不再贅述,等待大家去慢慢發(fā)掘。

Lombok工作中需要注意的點(diǎn)

Lombok雖然好用,但推薦大家選擇適合的地方使用Lombok,例如POJO是一個(gè)好地方,因?yàn)镻OJO很單純。

彩蛋 反編譯大法

如果有小伙伴想要深究Lombok是如何實(shí)現(xiàn)插入式注解的,可以利用反編譯大法查看源碼。
在此推薦另一款神兵利器 Java Decompiler。
官方網(wǎng)站為:http://java-decompiler.github.io/
有以下三種安裝方式:

JD-GUI 圖形化客戶端

JD-Eclipse eclipse插件

JD-IntelliJ idea插件

安裝完成后可以通過(guò)Java Decompiler驗(yàn)證Class文件。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73660.html

相關(guān)文章

  • 第二十九章:基于SpringBoot平臺(tái)使用Lombok來(lái)優(yōu)雅編碼

    摘要:還提供了全部參數(shù)的構(gòu)造函數(shù)的自動(dòng)生成,該注解的作用域也是只有在實(shí)體類上,因?yàn)橹挥袑?shí)體類才會(huì)存在構(gòu)造函數(shù)。當(dāng)然除了全部參數(shù)的構(gòu)造函數(shù),還提供了沒有參數(shù)的構(gòu)造函數(shù),使用方式與一致。 Lombok對(duì)于Java偷懶開發(fā)者來(lái)說(shuō)應(yīng)該是比較中意的,恰恰筆者就是一個(gè)喜歡在小細(xì)節(jié)上偷懶來(lái)提高開發(fā)效率的人。所以在技術(shù)框架的海洋里尋找了很久才在GitHub開源平臺(tái)上找到,而在這之前國(guó)外很多程序猿一直使用該框...

    fanux 評(píng)論0 收藏0
  • SpringBoot優(yōu)雅編碼之:Lombok加持

    摘要:概述通過(guò)提供簡(jiǎn)單的語(yǔ)法注解形式來(lái)幫助簡(jiǎn)化消除一些必須有但顯得很臃腫的代碼。作用在方法參數(shù)上的注解,用于自動(dòng)生成空值參數(shù)檢查自動(dòng)幫我們調(diào)用方法。 showImg(https://segmentfault.com/img/remote/1460000014247343); 概述 Lombok 通過(guò)提供簡(jiǎn)單的語(yǔ)法注解形式來(lái)幫助簡(jiǎn)化消除一些必須有但顯得很臃腫的 java 代碼。典型的是對(duì)于 ...

    olle 評(píng)論0 收藏0
  • Lombok pojo類小神器

    摘要:可以去下載包目前最新版本為。對(duì)于某個(gè)具體的類來(lái)說(shuō),出于安全或者性能或者其它方面的考慮,可能并不希望全部成員都出現(xiàn)在方法的返回值里。根據(jù)中的建議,方法和方法要同時(shí)實(shí)現(xiàn),并且保證一致性。 前言 Lombok主頁(yè) Lombok下載 Lombok引入項(xiàng)目之后,便可以使用 本文記錄了在項(xiàng)目中應(yīng)用Lombok時(shí)的使用案例,希望對(duì)朋友你有一些幫助。 可以去 下載jar包 maven: ...

    stackfing 評(píng)論0 收藏0
  • lombok簡(jiǎn)介

    摘要:簡(jiǎn)介是開發(fā)的神器,使用注解讓實(shí)體類還有日志操作特別方便。大家搜索安裝即可,不然,使用會(huì)報(bào)錯(cuò)。注解介紹注解可以針對(duì)類的屬性字段自動(dòng)生成方法。注解使用建造者模式,為制定參數(shù)賦值使用起來(lái)非常的方便,滿足日常的工作需要。 lombok簡(jiǎn)介 lombok是java開發(fā)的神器,使用注解讓實(shí)體類pojo還有日志slf4j操作特別方便。 lombok使用方式 (1)idea中使用lombok工具,需要...

    Jiavan 評(píng)論0 收藏0
  • SpringBoot:如何優(yōu)雅地處理全局異常?

    摘要:為了貼合主題,本次主要針對(duì)全局異常處理進(jìn)行舉例說(shuō)明。自定義異常處理自定義一個(gè)異常自定義異常程序員小明錯(cuò)誤碼錯(cuò)誤信息顯而易見,這個(gè)異常繼承了,屬于運(yùn)行時(shí)異常。包括處理其他異常,都是這種方式。 之前用springboot的時(shí)候,只知道捕獲異常使用try{}catch,一個(gè)接口一個(gè)try{}catch,這也是大多數(shù)開發(fā)人員異常處理的常用方式,雖然屢試不爽,但會(huì)造成一個(gè)問(wèn)題,就是一個(gè)Contr...

    李昌杰 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<