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

2512

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Các bạn có cảm thấy lười biếng mỗi khi phải khai báo các phương thức Getter, Setter cho các class Java không? Các bạn có thấy nhàm chán khi làm việc với những đoạn code theo khuôn mẫu trong Java không? Nếu tất cả các câu trả lời là có thì hãy xem xét sử dụng Project Lombok. Nó sẽ giúp các bạn loại bỏ những công việc nhàm chán này.

Project Lombok là gì?

Project Lombok là một công cụ giúp chúng ta generate code một cách tự động nhưng không phải giống như các IDE làm cho chúng ta. Các IDE generate các phương thức Getter, Setter và một số phương thức khác trong các tập tin .java. Project Lombok cũng generate các phương thức đó nhưng là trong các tập tin .class file.

Trang chủ: https://projectlombok.org/

Tất cả công việc chúng ta cần làm chỉ là sử dụng một số annotation của Project Lombok như @Getter, @Setter, @Builder, …  việc còn lại Project Lombok sẽ làm cho chúng ta. Tất nhiên, những thứ các bạn không muốn làm tự động thì bạn cũng có thể chỉ định để Project Lombok không generate chúng.

Để các IDE có thể hiểu được code do Project Lombok generate, các bạn cần cài đặt Project Lombok plugin cho chúng. Xem hướng dẫn cài đặt Project Lombok cho IntelliJ IDE ở đây.

Getter, Setter và Constructors với Project Lombok

Trong bài viết này, mình sẽ giới thiệu với các bạn cách sử dụng Project Lombok để generate các phương thức Setter, Getter và constructor trong một đối tượng Java một cách tự động.

Đầu tiên, mình sẽ tạo một Maven project để làm ví dụ:

Getter, Setter và Constructors với Project Lombok

với Project Lombok dependency như sau:

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

Các bạn hãy nhớ là chúng ta cần phải install Project Lombok plugin vào trong IDE của chúng ta để IDE có thể hiểu và không bị lỗi compile.

Bây giờ, ví dụ mình có class Student với một số thông tin như sau: name, code, dateOfBirth. Nếu không sử dụng Project Lombok thì mình phải khai báo các thông tin này như sau:

package com.huongdanjava.lombok;

import java.util.Date;

public class Student {
    
    private String name;
    private String code;
    private Date dateOfBirth;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Date getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
}

Ở đây có nhiều Java job với mức đãi ngộ hấp dẫn, apply ngay!

Với Project Lombok, mình có thể remove các phương thức Getter, Setter trong Student class và để cho Project Lombok tự generate chúng bằng cách sử dụng annotation @Getter và @Setter:

package com.huongdanjava.lombok;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
public class Student {

    private String name;
    private String code;
    private Date dateOfBirth;

    public Student(String name) {
        this.name = name;
    }
}

và thêm một default constructor, một constructor với tất cả các thông tin của class Student bằng cách sử dụng các annotation @NoArgsConstructor và @AllArgsConstructor như sau:

package com.huongdanjava.lombok;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Student {

    private String name;
    private String code;
    private Date dateOfBirth;

    public Student(String name) {
        this.name = name;
    }
}

Bây giờ, các bạn có thể sử dụng Student class với các phương thức Getter, Setter và constructor mà chúng ta đã định nghĩa với Project Lombok.

Ví dụ:

package com.huongdanjava.lombok;

public class Example {

    public static void main(String[] args) {
        Student student = new Student(null, null, null);
        student.setName("Khanh");

        System.out.println(student.getName());
    }
}

Kết quả:

Getter, Setter và Constructors với Project LombokChúng ta còn có thể khai báo Getter, Setter cho chỉ một số thuộc tính của đối tượng Java sử dụng @Getter, @Setter annotation. Ví dụ như, bây giờ mình chỉ khai báo Getter, Setter cho thuộc tính code của Student class, mình sẽ khai báo như sau:

package com.huongdanjava.lombok;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Date;

@NoArgsConstructor
@AllArgsConstructor
public class Student {

    private String name;

    @Getter
    @Setter
    private String code;

    private Date dateOfBirth;

    public Student(String name) {
        this.name = name;
    }

}

Bây giờ, các bạn chỉ có thể sử dụng Getter, Setter cho thuộc tính code của đối tượng Student mà thôi:

Getter, Setter và Constructors với Project Lombok

Thông qua những nội dung trên chắc hẳn bạn đã hình dung được Project Lombok là gì và bước đầu ứng dụng được những hiệu quả mà nó mang lại. Chúc bạn làm việc hiệu quả.

Bài viết gốc được đăng tải tại huongdanjava.com
Xem thêm:

Tìm việc làm CNTT mọi cấp độ tại TopDev nhé!