相信大家都在寫Java的時候很常遇到需要自己寫一堆Getter和Setter方法的時候吧?
Lombok的出現就是解救我們大家可以避免寫了很多冗長的程式碼,只要學會使用Lombok的annotation使用時機,就可以節省很多開發時間跟簡化你的程式碼。
pom.xml新增以下設定,目前已經版本更新到1.18.34
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
安裝完畢之後就可以使用了喔!!
@Getter @Setter@Getter 註解用於自動生成字段的 getter 方法@Setter 註解用於自動生成字段的 setter 方法@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
但我們如果只用了Lombok annotation之後,我們的程式碼只需要簡化如下
@Getter
@Setter
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
}
@ToStringtoString() 預設印出所有非static的欄位。@ToString
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
}
@NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor@NoArgsConstructor 生成一個無參數的建構函數。@RequiredArgsConstructor 生成一個包含所有被 final 修飾的字段的建構函數。@AllArgsConstructor 註解生成一個包含所有字段的建構函數。@AllArgsConstructor一定要記得搭配使用 @NoArgsConstructor才不會發生不預期的錯誤喔!@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
//
Book book1 = new Book(1, "Hello World");
Book book2 = new Book(2, "Libary", "Alice");
}
@Builder@Builder可用於自動為我們的類別產生建構器。@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
//
Book book = Book.builder()
.bookId(1)
.name("Iron")
.author("Winnie")
.build();
}
@Data@Data就是萬用大全,等於同時標註了:
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
因為沒有包含@NoArgsConstructor,所以也要記得加上喔!!!!
@Slf4j@Slf4j真的是個超好用的註解,平常沒有他的話,我們都需要自己在service自己宣告logger.class,透過註解我們可以直接生成**Slf4j **的來繼續log
@Service
@Slf4j
public class IronService {
...
}
透過剛剛的介紹,有沒有覺得Lombok真的的發明真的是拯救大家簡化了很多程式碼,真的建議一定要添加喔!