Java優雅編碼之Lombok

一、概述

1. 官網介紹
Project Lombok官網介紹

大概的意思:Lombok是一個Java庫,能自動插入編輯器並構建工具,簡化Java開發。通過添加註解的方式,不需要爲類編寫getter或eques方法,同時可以自動化日誌變量。

2. 使用
  Lombok 通過提供簡單的語法註解形式來幫助簡化消除一些必須有但顯得很臃腫的Java 代碼,典型的是對於 POJO對象的簡化(如自動幫我們生成Setter和Getter等),有了Lombok的加持,開發人員可以免去很多重複且臃腫的操作,極大地提高java代碼的信噪比,因此我們必須嘗試並應用起來!


二、Lombok安裝(IntelliJ idea)

  • 進入IntelliJ idea Plugins界面;

  • 然後搜索並安裝Lombok插件;
    idea Plugins搜索安裝 lombok

  • 開啓註解生成器Annotation Processors的Enable選項;
    勾選Enable annotation processing

  • 最後需要重啓idea生效

idea中設置完成後需要在項目的pom.xml中添加如下所示的lombok依賴才能使用

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.16</version>
</dependency>

三、Lombok簡單使用

不使用lombok和使用lombok
編譯源文件,然後反編譯class文件,可以發現@Data註解在類上,會爲類的所有屬性自動生成setter/getter、equals、canEqual、hashCode、toString方法,如爲final屬性,則不會爲該屬性生成setter方法。


四、Lombok主要註解

  • @Getter and @Setter:自動爲屬性提供 Set和Get 方法;
  • @ToString:該註解的作用是爲類自動生成toString()方法;
  • @EqualsAndHashCode:爲對象字段自動生成hashCode和equals實現;
  • @AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor:顧名思義,爲類自動生成對應參數的constructor;
  • @Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog:自動爲類添加對應的log支持;
  • @Data:自動爲所有字段添加@ToString, @EqualsAndHashCode, @Getter,爲非final字段添加@Setter和@RequiredArgsConstructor,本質上相當於幾個註解的綜合效果;
  • @NonNull:自動幫助我們避免空指針。作用在方法參數上的註解,用於自動生成空值參數檢查;
  • @Cleanup:自動幫我們調用close()方法。作用在局部變量上,在作用域結束時會自動調用close方法釋放資源;

五、@Log註解實戰

普通 Spring Boot日誌框架項目中,使用Log4j2來作爲日誌對象,寫法如下:

@RestController
@RequestMapping("/testlogging”)
public class LoggingTestController {

    private final Logger logger = LogManager.getLogger(this.getClass());

    @GetMapping("/hello”)
    public String hello() {
        for(int i=0;i<10_0000;i++){
            logger.info("info execute index method”);
            logger.warn("warn execute index method”);
            logger.error("error execute index method”);
        }
        return "My First SpringBoot Application”;
    }
}

若改用Lombok後,寫法變得更加簡潔,只需要引入對應的@Log註解即可完成log對象的生成:

@RestController
@RequestMapping("/testloggingwithlombok”)
@Log4j2
public class LoggingTestControllerLombok {

    @GetMapping("/hello”)
    public String hello() {
        for(int i=0;i<10_0000;i++){
            log.info("info execute index method”);
            log.warn("warn execute index method”);
            log.error("error execute index method”);
        }
        return "My First SpringBoot Application”;
    }
}

六、Lombok的優缺點

優點:

  • 能通過註解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法,提高了一定的開發效率;
  • 讓代碼變得簡潔,不用過多的去關注相應的方法;
  • 屬性做修改時,也簡化了維護這些屬性所生成的getter/setter方法等。

缺點:

  • 不支持多種參數構造器的重載;
  • 雖然省去了手動創建getter/setter方法的麻煩,但大大降低了源代碼的可讀性和完整性,降低了閱讀源代碼的舒適度。

Tips

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章