過去我們在開發程式的時候,當我們要建立一些modle class, 像是entity, DTO, data class...
如下我們要建立一個Product class,並且建立該產品物件所需要的變數
因為物件導向設計的原則因素,我們必須將變數設定成private
因此當我們需要讓別的程式能夠去存取該物件的話,我們就得需要開放get, set的介面供client使用, 如下
雖然現在的IDE都提供了非常方便的建立這些getter, setter的方法
但是一旦變數多了,對於程式而言就會變得非常難以閱讀,並且會感覺很凌亂,程式碼看起來很醜
因此我就要使用今天要介紹的Lombok這個套件工具,來幫助我們簡化我們的程式,讓我們的程式看起來更加簡潔
首先必須在pom檔當中加入lombok
可以到Maven Repository 複製以上語法唷, https://mvnrepository.com/artifact/org.projectlombok/lombok
接著我們就可以移除本來一大堆的get, ser 方法,在Product Class上加上@Getter, @Setter 用來是自動產生 getter和setter
程式是不是就變得非常簡潔有力了~
下面我們就用一個簡單的範例來測試加入lombok的annotation的get和set是有作用的
@Data是一個更加簡潔的寫法,也是一個懶人包
在class上方加入這個annotation 等於包含了@Getter 和 @Setter
正確地來說@Data 包含了以下 lombok 的註解:
@Getter/@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
但由於我們今天只有介紹到 @Getter/@Setter ,其餘的註解之後我們有空再來看~
因此如果你是希望一次可以使用@Getter/@Setter 就只需要使用 @Data 這個註解
再去執行一次剛剛的測試,會得到相同的結果
看到這裡有人可能就會問,那這樣會不會破壞了物件導向設計的封裝性?
不用擔心唷~ 如果你的設計當中需要去特別針對get或set方法做一些處理,在使用lombok的同時仍然可以覆寫方法
如下, 假設我的getProductName這個方法需要特別處理讓他回傳固定的字串,那就直接override該方法
這時候我們一樣去執行剛剛的測試程式
這時候即便我們有set product name,但我們在使用get方法的時候得到的結果就回是我們override過後的結果
在Spring Boot 使用Lombok - @RequiredArgsConstructor、@NoArgsConstructor、@AllArgsConstructor
留言列表