今天看代碼,發現idea報錯,仔細一看調用的get,set方法bean中都沒有,但是運行起來卻沒有問題,這個讓我很疑惑。后來發現在類上有一個以前沒見過的注解@Data,大概就是因為有他的原因。這個注解來自於lombok。
我們使用lombok的注解時,例如使用@Data,我們不需要再代碼中再顯示的寫get,set方法等,當我們使用的時候可以直接使用注解給我們生成的get,set方法,但是此時idea是不知道這個注解的作用的,會誤報沒有這個方法,所以你會看到idea瘋了一樣的到處報錯。為了解決這個問題,我們需要在idea中安裝插件lombok plugin(直接在idea的prefrences->plugin里搜索就可以找到)。安裝完重啟idea問題就解決了。
下面我們來看一下lombok中都有哪些好用的注解
@NonNull : 注解在參數上, 如果該類參數為 null , 就會報出異常, throw new NullPointException(參數名)
@Cleanup : 注釋在引用變量前, 自動回收資源 默認調用 close() 方法
@Getter/@Setter : 注解在類上, 為類提供讀寫屬性
@Getter(lazy=true) :實際使用到的時候生成
@ToString : 注解在類上, 為類提供 toString() 方法
@EqualsAndHashCode : 注解在類上, 為類提供 equals() 和 hashCode() 方法
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在類上, 為類提供無參,有指定必須參數, 全參構造函數
@Data : 注解在類上, 為類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法
@Value :@Data類似,區別在於它會把所有成員變量默認定義為private final修飾,並且不會生成set方法。
@Builder : 注解在類上, 為類提供一個內部的 Builder
@Synchronized : 注解在方法上, 為方法提供同步鎖
@Log4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象
@Slf4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象