過去我們在開發程式的時候,當我們要建立一些modle class, 像是entity, DTO, data class...

如下我們要建立一個Product class,並且建立該產品物件所需要的變數

product model.png

因為物件導向設計的原則因素,我們必須將變數設定成private

因此當我們需要讓別的程式能夠去存取該物件的話,我們就得需要開放get, set的介面供client使用, 如下

get and set.png

雖然現在的IDE都提供了非常方便的建立這些getter, setter的方法

但是一旦變數多了,對於程式而言就會變得非常難以閱讀,並且會感覺很凌亂,程式碼看起來很醜

 

因此我就要使用今天要介紹的Lombok這個套件工具,來幫助我們簡化我們的程式,讓我們的程式看起來更加簡潔

首先必須在pom檔當中加入lombok

lombok dependency.png

可以到Maven Repository 複製以上語法唷, https://mvnrepository.com/artifact/org.projectlombok/lombok

 

接著我們就可以移除本來一大堆的get, ser 方法,在Product Class上加上@Getter, @Setter 用來是自動產生 getter和setter

@getter @setter.png

程式是不是就變得非常簡潔有力了~

下面我們就用一個簡單的範例來測試加入lombok的annotation的get和set是有作用的

 

product test.png

ouput1.png

 

@Data是一個更加簡潔的寫法,也是一個懶人包

在class上方加入這個annotation 等於包含了@Getter 和 @Setter

正確地來說@Data 包含了以下 lombok 的註解: 

@Getter/@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor

但由於我們今天只有介紹到 @Getter/@Setter ,其餘的註解之後我們有空再來看~

因此如果你是希望一次可以使用@Getter/@Setter 就只需要使用 @Data 這個註解

@Data.png

再去執行一次剛剛的測試,會得到相同的結果

 

看到這裡有人可能就會問,那這樣會不會破壞了物件導向設計的封裝性?

不用擔心唷~ 如果你的設計當中需要去特別針對get或set方法做一些處理,在使用lombok的同時仍然可以覆寫方法

如下, 假設我的getProductName這個方法需要特別處理讓他回傳固定的字串,那就直接override該方法

override.png

這時候我們一樣去執行剛剛的測試程式

product test.png

這時候即便我們有set product name,但我們在使用get方法的時候得到的結果就回是我們override過後的結果

ouput2.png

在Spring Boot 使用Lombok - @RequiredArgsConstructor、@NoArgsConstructor、@AllArgsConstructor

arrow
arrow
    文章標籤
    java spring boot lombox
    全站熱搜

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()