Lombok是一個能夠讓編程人員沒必要硬編set、get、構造以及hash和toString方法的插件,在編譯時會自動根據定義的屬性生成包含這些相關方法的class文件。編程
經常使用的註解以下:maven
@AllArgsConstructor
做用於類,生成全部屬性的代參構造函數ide
@NoArgsConstructor函數
做用於類,生成無參構造函數ui
@toString
做用於類,生成toString方法this
@EqualsAndHashCode
做用於類,生成equals和hashcode方法idea
@Setter,@Getter.net
做用於類,爲全部屬性生成set和get方法,做用於屬性,爲該屬性生成set和get方法;插件
下面這三個註解比較厲害了,終極大boss:3d
@Data
做用於類,能夠生成上面除了@AllArgsConstructor之外全部的方法。
若想生成全部參數構造,需配合@AllArgsConstructor使用,可是無參構造就會失效,因此須要自定義或搭配@NoArgsConstructor一塊兒使用。
須要說明的是:
若自定義了set或get方法,@Setter,@Getter和@Data三個註解使用時是不會覆蓋生成set或get方法的
@Builder
用於類,生成一個當前類的builder構建器、builder方法和全參構造函數。構建器中的全部方法爲當前類的屬性名命名,功能涵蓋set方法功能,但同時返回構建器對象,還有一個build方法,最終調用生成當前類對象。
Builder方法用於生成構造器對象。
須要注意:
使用該註解會同時生成全參構造函數,因此如需無參構造,須要自定義或配合@NoArgsConstructor一塊兒使用
@Accessors(chain = true)
這是一個還在實驗階段或公測階段的一個功能註解。須要配合@data或@set、@get使用。
可包含三個參數:
fluent:布爾值,默認false,true時生成的set和get方法都會去掉set個get前綴,該值爲true時,chain屬性默認爲true
chain:布爾值,默認false,只有fluent爲true時默認true。true時全部set方法返回值有void變成當前對象;
Prefix:前綴屬性(不經常使用,沒細研究)
下來看看實際如何操做
首先是idea安裝:
設置激活安裝的插件:
添加maven依賴:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency>
@data使用示例
在右側structure選項能夠看到結果,也能夠Ctrl+F12查看結果以下:
@builder使用示例:
Ctrl+F12結果以下:
代碼使用:
@Accessors使用示例:
代碼:
是否是跟@builder用法有點類似……
日誌相關的註解:
@Slf4j(至關於:org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(this.getClass() );)
實例名就是「log」,使用以下:
log.warn(e.getMessage());
log.error(e.getMessage(), e);
還有其餘日誌相關注解,如:@Log4j / @Log4j2 / @CommonsLog ……
至此,lombok輝煌的一輩子就概述結束了,哈哈哈……