如何使用
@Data
該注解相當(dāng)于同時(shí)加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode煤搜,作用于類中
@Getter@Setter
作用于屬性上,自動(dòng)生成get,set方法.
@NonNull
該注解快速判斷是否為空,如果為空,則拋出java.lang.NullPointerException
@Synchronized
該注解自動(dòng)添加到同步機(jī)制,有趣的是,生成的代碼并不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上
@ToString
該方法大家應(yīng)該非常熟悉,但需要注意的是:@ToString有多個(gè)屬性可以進(jìn)一步設(shè)置:
callSuper 是否輸出父類的toString方法,默認(rèn)為false
includeFieldNames 是否包含字段名稱,默認(rèn)為true
exclude 排除生成tostring的字段
@Cleanup
注釋可用于確保已分配的資源被釋放,如IO的連接關(guān)閉丛忆。
為什么出現(xiàn),解決了什么問題
1.可以幫助我們避免空指針
2.自動(dòng)幫我們調(diào)用close()方法
3.自動(dòng)生成Getter/Setter方法
4.自動(dòng)生成無參數(shù)構(gòu)造函數(shù)
5.自動(dòng)生成全參數(shù)構(gòu)造函數(shù)
6.自動(dòng)為所有字段添加@ToString, @EqualsAndHashCode, @Getter方法绑改,為非final字段添加? ? ? @Setter,和@RequiredArgsConstructor!
以前是怎么做的
1.我們會(huì)定義很多的domain實(shí)體類,需要給每個(gè)字段手動(dòng)添加setter/getter.?
2.需要打印對(duì)象的時(shí)候,需要自己手動(dòng)的添加toString()方法.?
3.給domain添加無參構(gòu)造函數(shù)和所有參數(shù)的構(gòu)造函數(shù).