簡單介紹Lombok使用@Tolerate實現衝突相容問題
使用Lombok能夠減少程式設計師的重複工作提高工作效率,而Lombok的註解基本是基於標準的(如,標準的Builder模式),而實際開發的時候有時候為了實現某些能力會對標準實現做一些變形,而這個時候Lombok的標準實現就會無法滿足需求。
使用@Builder對一個DTO實現一個構造器,但是在做Json反序列化的時候發生錯誤,
原因就是缺少無參公共的建構函式,
而手動寫一個無參建構函式的時候編譯錯誤,就是和@Builder衝突,雖然標準的@Builder沒法是需要私有化建構函式的,但是在某些場景下我們需要對這種標準變形,這個時候Lombok提供了@Tolerate實現對沖突的相容。
/** * < p> * 包括能力、知識點等 * < /p> * * @author hlong * @since 2020-09-10 */ @Data @Entity @Table(name = "que_attr") @Builder @ApiModel(value="QueAttr物件", description="包括能力、知識點等") public class QueAttr implements Serializable { @Tolerate QueAttr() {} private static final long serialVersionUID = 1L; @ApiModelProperty(value = "屬性編號,系統自動產生") @Id @Column(name = "attr_id") private Long attrId; @ApiModelProperty(value = "屬性編碼") @Column(name = "attr_code") private String attrCode; @ApiModelProperty(value = "屬性名稱") @Column(name = "name") private String name; @ApiModelProperty(value = "屬性名稱中文") @Column(name = "name_cn") private String nameCn; @ApiModelProperty(value = "簡稱") @Column(name = "name_short") private String nameShort; @ApiModelProperty(value = "上級節點") @Column(name = "attr_up") private Long attrUp; @ApiModelProperty(value = "級別:第1級為0") @Column(name = "lev") private Integer lev; @ApiModelProperty(value = "從小到大,從1開始") @Column(name = "sort_no") private Integer sortNo; @ApiModelProperty(value = "(列舉)屬性分類資訊 見字典表,這裡主要是能力和知識點") @Column(name = "attr_type") private Long attrType; @ApiModelProperty(value = "機構編號:0公司") @Column(name = "org_id") private Long orgId; @Column(name = "subject") private Long subject; @Column(name = "key_stage") private Long keyStage; @Column(name = "grade") private Long grade; @Column(name = "term") private Integer term; @ApiModelProperty(value = "新增人") @Column(name = "user_create") private Long userCreate; @ApiModelProperty(value = "-1刪除 0草稿 1有效") @Column(name = "status") private Integer status; @Column(name = "sys_code") private Long sysCode; @ApiModelProperty(value = "更新時間") @Column(name = "time_update") private Timestamp timeUpdate; @ApiModelProperty(value = "備註") @Column(name = "remark") private String remark; @ApiModelProperty(value = "屬性的uuid") @Column(name = "attr_uuid") private String attrUuid; @ApiModelProperty(value = "屬性的父級uuid") @Column(name = "attr_up_uuid") private String attrUpUuid; @ApiModelProperty(value = "教材版本uuid") @Column(name = "book_code") private String bookCode; @ApiModelProperty(value = "教材版本名稱") @Column(name = "book_name") private String bookName; @ApiModelProperty(value = "年級的code-學院code") @Column(name = "grade_uuid") private String gradeUuid; }
實現對沖突的相容,官方解釋:使任何方法或者建構函式讓 lombok 假裝它不存在,作用於方法上,沒什麼大用,可以配合 @Builder 使用
使用 Lombok 能夠減少程式設計師的重複工作提高工作效率,而 lombok 的註解基本是基於標準的(如,標準的 Builder 模式),而實際開發的時候有時候為了實現某些能力會對標準實現做一些變形,而這個時候 lombok 的標準實現就會無法滿足需求
使用 @Builder 對一個 DTO 實現一個構造器,但是在做 Json 反序列化的時候發生錯誤,原因就是缺少無參公共的建構函式,而手動寫一個無參建構函式的時候編譯錯誤,就是和 @Builder 衝突,雖然標準的 @Builder 沒法是需要私有化建構函式的,但是在某些場景下我們需要對這種標準變形,這個時候 lombok 提供了 @Tolerate 實現對沖突的相容
@Builder public class 程熙媛 { @Tolerate public 程熙媛() {} }
以上為個人經驗,希望能給大家一個參考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2913341/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mapstruct結合lombok使用的衝突問題StructLombok
- jQuery.noConflict()實現防衝突原理機制簡單介紹jQuery
- javascript for in語句瀏覽器相容問題簡單介紹JavaScript瀏覽器
- getBoundingClientRect()瀏覽器相容問題簡單介紹GCclient瀏覽器
- $.noConflict()方法實現防衝突原理介紹
- 使用CORS實現ajax跨域簡單介紹CORS跨域
- 用if條件語句來實現瀏覽器相容簡單介紹瀏覽器
- 簡單介紹numpy實現RNN原理實現RNN
- 簡單介紹NMS的實現方法
- 解決echsop相容jquery(transport.js的衝突)的問題jQueryJS
- Lombok介紹及使用方法Lombok
- POP簡單介紹與使用實踐
- onMeasure簡單方法 完美解決ListView與ScollView衝突問題!View
- NodeJS require路徑問題簡單介紹NodeJSUI
- javascript實現繼承方式簡單介紹JavaScript繼承
- javascript實現鏈式呼叫簡單介紹JavaScript
- Lombok介紹,使用方法及原理Lombok
- javascript實現二維陣列實現簡單介紹JavaScript陣列
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- 實現微信搖一搖功能簡單介紹
- Lombok介紹和配置Lombok
- lombok註解介紹Lombok
- tcp 實現簡單http 問題TCPHTTP
- JAR衝突問題的解決JAR
- git 解決版本衝突問題Git
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- VMware無法啟動/VMware和wsl衝突問題/VMware與Hyper-V衝突問題
- 簡單介紹使用Nginx限制百度蜘蛛頻繁抓取的問題Nginx
- RPC模式的介紹以及簡單的實現RPC模式
- 簡單介紹SpringMVC RESTFul實現列表功能SpringMVCREST
- 簡單介紹Go 字串比較的實現示例Go字串
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- javascript模擬實現私有屬性簡單介紹JavaScript
- jquery實現的元素居中外掛簡單介紹jQuery
- javascript如何實現模組程式設計簡單介紹JavaScript程式設計
- 執行緒池的介紹及簡單實現執行緒
- 簡單介紹vue3.x 使用jsplumb實現拖拽連線VueJS
- 簡單介紹nginx 變數使用Nginx變數