Lombok là gì? Sinh code tự động trên Eclipse – Intellij

3259

Bài viết được sự cho phép của tác giả Trần Hữu Cương

1. Lombok là gì?

Lombok là một thư viện Java giúp tự sinh ra các hàm setter/getter, hàm khởi tạo, toString… và tinh gọn chúng.

Thực tế thì hầu hết các IDE hiện này đều hỗ trợ sinh code tự động ví dụ như trên eclipse ta click chuột phải vào file cần sinh code và chọn Source và chọn các method cần sinh rLombok

Tuy nhiên với những class có nhiều thuộc tính thì việc hiển thị các hàm getter/setter hay các hàm toString sẽ khiến cho class bị rối. Lombok sinh ra chính là để khắc phục những điểm đó.

Ví dụ class không sử dụng lombok và class có sử dụng lombok:

Lombok

2. Cài đặt Lombok

Để sử dụng các annotation của Lombok ta cần sử dụng thư viện lombok:

Sử dụng maven:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    <scope>provided</scope>
</dependency>

Hoặc download file lombok-1.16.20.jar

  Project Lombok là gì? Getter, Setter và Constructors với Project Lombok

  Sử dụng Lombok để rút gọn code trong Java

Cài đặt plugin lombok cho IDE

Với Intellij: vào File/Settings/Plugins và nhập lombok ở ô tìm kiếm và click install.

Lombok

Với Eclipse: ta click vào file lombok-1.16.20.jarhoặc chạy lệnh java -jar lombok-1.16.20.jar

Trên giao diện cài đặt lombock, ta click button “Specify Location” và trỏ tới file eclipse.exe

Lombok

Lombok

Sau khi cài đặt thành công ta sẽ thây lombok xuất hiện trong phần about của eclipse.

Lombok

Tuyển dụng lập trình viên Java lương cao

3. Code ví dụ với lombok

Đầu tiên là với annotion @Getter @Setter sẽ giúp sinh ra các  method getter/setter

Lombok

Ngoài cách dùng annotation @Getter @Setter trước các field ta có thể dùng trước class để áp dụng cho tất cả các field

Lombok

Annotation @AllArgsConstructor và @NoArgsConstructor giúp tạo ra các hàm khởi tạo với tất cả các tham số và hàm khởi tạo không tham số

Lombok

Annotation @ToString @EqualsAndHashCode giúp tạo ra các hàm equal và toString theo tất cả các thuộc tính.

Lombok

Nếu bạn chỉ muốn equal hay toString cho một số field thì có thể dùng thêm thuộc tính exclude:

Ví dụ mình chỉ muốn toString trả về name, và hàm equal theo name:

@ToString(exclude="address")
@EqualsAndHashCode(exclude="address")
public class Person {
  @Getter @Setter private String name;
  @Getter @Setter private String address;
}

Annotation @Data sẽ tương đương với annotation @Getter + @Setter + @ToString + @EqualsAndHashCode + @NoArgsConstructor

Lombok

Demo:

Ta không khai báo hàm khởi tạo với tham số và các hàm getter/setter nhưng vẫn có thể gọi nó vì lombok đã tự generate và tối ưu nó.

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;

@ToString(exclude = "address")
@AllArgsConstructor
@Data
public class Person {
  private String name;
  private String address;

  public static void main(String[] args) {
    Person person = new Person("kai", "Ha Noi - Viet Nam");
    System.out.println(person);
    System.out.println("Address: " + person.getAddress());
 }

}

Kết quả:

Lombok

Bài viết gốc được đăng tải tại stackjava.com

Bạn có thể quan tâm:

Xem thêm các việc làm công nghệ hấp dẫn trên TopDev