@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方法;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM