1. 程式人生 > 實用技巧 >@Data註解引出lombok包

@Data註解引出lombok包

最近翻看一個新的專案,發現一個有趣的一點,就是這個專案的javabean並沒有寫對應屬性的get、set、equals、toStirg等方法,卻可以為屬性賦值。
仔細看發現有一個@Data註解。感覺有點意思就研究一下。這個註解是屬於Lombok包的。

Lombok優點:
Lombok可以最大限度的簡化我們的程式碼。比如開發中使用的javabean。普通情況下我們要新增他的get、set方法,遇到一個實體類有三四十個屬性時整個類會顯得很長。並且也需要花時間去新增這些get、set方法,特殊情況下也需要去重寫他的構造器和equals等方法。
此時lombok的優點就出來了,Lombok是通過註解的方式,在編譯時自動為屬性生成構造器、getter/setter、equals、hashcode、toString方法。
在.java檔案中並沒有顯示來這些方法,不過編譯後的.class檔案中有這些方法。這樣程式碼比較簡潔,開發效率也提高了。

Lombok的使用需要引入jar包,maven專案中可以直接新增依賴(版本看情況自定):

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

常用註解:

@Setter :此註解會生成除final屬性外的其他屬性的對應的setter方法;
@Getter: 此註解會生成除final屬性外的其他屬性的對應的getter方法;
@ToString:此註解會自動重寫對應的toStirng方法;
@NoArgsConstructor:此註解會生成對應的無參構造方法;
@RequiredArgsConstructor將標記為@NoNull的屬性生成一個構造器
@HashCode:
@Equals:
@CanEqual:
@Data:比較暴力,它包含很多註解,即當使用當前註解時,會自動生成包含的各種方法(@Setter+@Getter+@ToString+@EqualsAndHashCode);
@AllArgsConstructor:此註解會生成全部屬性對應的的有參構造方法(不包含final屬性);
@Log(這是一個泛型註解,具體有很多種形式)
@EqualsAndHashCode:在JavaBean或類JavaBean中使用,使用此註解會自動重寫對應的equals方法和hashCode方法;
@Log4j:在需要列印日誌的類中使用,當專案中使用了log4j列印日誌框架時使用該註解,會簡化日誌的列印流程,只需呼叫info方法即可,不需要再寫private final static Logger logger = LoggerFactory.getLogger(XXXXXXXXX.class);

在使用以上註解需要處理引數時,處理方法如下(以@ToString註解為例,其他註解同@ToString註解):
@ToString(exclude="column","..",..)
意義:排除對應列所對應的屬性,生成toString時不包含column,..等多個引數;
@ToString(of="column","..",..)
意義:只生成包含對應列所對應屬性的引數的toString方法;