Trước hết, nếu các bạn chưa biết thì Lombok là một thư viện của Java, vậy tại sao nó lại có thể giúp bạn quay tay nhanh gấp 69 lần, ý của mình là code nhanh hơn 69 lần.

Hãy cùng nhớ lại cách mà chúng ta tạo ra một class hoàn chỉnh trong java nhé:

  • Hồi còn đi học ở trường: Một class chỉ có vài properties, một dự án chỉ cỡ vài class.
  • Lúc làm bài kiểm tra: Một class có khoảng 10 mấy properties, tầm chục class như vậy.
  • Lúc đi làm: Tám chục hay 100 properties cho 1 class là ít, mà 1 dự án thì mấy trăm hay hàng ngàn DTO (Data Transfer Object).

Hồi còn đi học thì còn thích ngầu ngầu (hoặc là tập đánh 10 ngón) nên lúc nào cũng tự tay code các hàm Getter&Setter và Constructor cho các class. Nhưng code hoài những thứ lặp đi làm lại đó cũng chán (hoặc là đã thành thạo đánh bàn phím 10 ngón rồi :]] ) thế là cũng mày mò biết được trong IDE có thủ thuật cho phép sinh tự động các hàm Setter&Getter trong 3 giây (trong bài này mình sẽ sử dụng Eclipse để làm ví dụ nhé).

Sau khi tạo class và một số properties cho class, bấm nhấn tổ hợp phím (ALT SHIFT S) + R, sau đó chọn các thuộc tình mà bạn muốn sinh tự động các hàm GetterSetter (mình xin phép không nói kỹ đoạn này, vì mình tin chắc là bạn nào cũng có khả năng làm được).

Với cách sử dụng thủ thuật trong IDE thì nó cũng giúp bạn tăng tốc rất là nhiều rồi, dù class có hàng ngàn properties đi chăng nữa, thì cũng không tốn bao nhiêu thời gian cho việc này. Vậy tại sao lại cần LOMBOK khi bạn đã biết cách đi đường quyền với IDE.

À, mình quên mất chưa nói về mục đích mà LOMBOK xuất hiện ở trái đất.

Lombok là một thư viện, một plugin, giúp chúng ta giảm thiểu các đoạn code thừa (boilerplate) bằng cách tự động sinh ra các hàm Get, Set, Constructor, v.v.. Mặc dù nó là một công cụ giúp chúng ta generate code một cách tự động nhưng không giống như các IDE làm. 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. Lombok cũng generate các phương thức đó nhưng là trong các tập tin .class file. Với tiêu chí giúp developer tập trung vào tầng nghiệp vụ và logic thay vì mất thời gian làm những việc “thừa thãi”, không những làm cho code sáng sửa và dễ phát triển hơn.

Vẫn chưa đủ thuyết phục bạn đúng không nào, OK mình sẽ đưa ra vài dẫn chứng để bạn quyết định có nên sử dụng LOMBOK trong dự án của mình hay không:

  • Ta có một class với 69 thuộc tính (properties) và một hàm khởi tạo (constructor) với đầy đủ các tham số. Bây giờ nhiệm vụ của bạn là thêm 5 thuộc tính nữa, khá đơn giản đúng không nào và thao tác lần lượt của bạn là: Thêm 5 thuộc tính, thêm 5 tham số vào hàm khởi tạo, thêm 5 dòng code gắn lại giá trị của thuộc tính bằng giá trị của  tham số trên, tạo các method getter/setter và hiệu chỉnh method toString nếu cần thiết. Vậy nếu thêm 10 hay 20 thuộc tính nữa thì bạn nghĩ sao ==>> LOMBOK sẽ cứu rỗi linh hồn của bạn trong trường hợp này.
  • Cũng như bài toán trên, 3 DEV cùng thêm các thuộc tính mới, mỗi người 5 thuộc tính. Bạn hãy thử suy nghĩ về thứ tự của các tham số trong trong hàm khởi tạo, 3 thanh niên đó phối hợp xử lý ít nhất cũng hết 2 tiếng ==>> LOMBOK giải quyết trong 2 phút.
  • Một DEV culi vừa vào dự án, tự tin với thủ thuật sinh Getter và Setter của IDE, vâng vẫn là thêm vài thuộc tính mới, ảnh mở class của bạn có 1000 lines ra và thêm vào, nhìn sơ sơ không thấy gì đặc biệt trong class này, thế là ảnh xóa hết và generate lại các method cho nó đúng chuẩn và thế là chuyện gì đến cũng phải đến, một số bùa code của bạn trong các hàm Setter đã không cánh mà bay. Cũng vì code quá dài dòng và không cần thiết nên đã khiên cho thanh niên chưa trải sự đời kia có những hành động ngu ngốc ==>> Vâng, không ai khác, LOMBOK sẽ lại cứu bạn trong bàn thua trong thấy này.
  • Rõ ràng, dễ hiểu, ngắn gọn, đẹp, nhanh gọn lẹ, modify và custom linh hoạt, v.v.. hãy thử và cảm nhận sự sung sướng qua các tư thế mà LOMBOK mang lại.

Khá lâu cho màn dạo đầu, nếu bạn vẫn không thích và không muốn tiến sâu và bên trong để khám phá thì bạn đừng tốn thời gian mò mẫm tiếp với bài viết này nhé, hay đứng dậy và ra ngoài thư giãn, còn đối với những ai cảm thấy tò mò và đang hưng phấn, thì cùng mình tiếp tục lột LOMBOK ra xem hàng họ như thế nào nha.

1. Hướng dẫn cài đặt
    a. Sử dụng maven để quản lý các thư viện trong dự án

Apache Maven là một chương trình quản lý dự án cho phép các developers có thể quản lý về version, các dependencies ( các thư viện sử dụng trong dự án ) , quản lý build, tự động download javadoc & source …

Truy cập vào liên kết sau để lấy thông tin về Lombok cho project của bạn nhé https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.12 

Clean Installupdate project của bạn lại nhé. Vậy là xong.

b. Apply Lombox vào IDE Eclipse làm theo các bước sau:

Giải nén lombok.zip vào thư mục của eclipse của bạn

Edit file eclipse.iniadd plugin lombok như hình bên dưới:

-javaagent:lombox/lombok.jar
-Xbootclasspath/a:lombox/lombok.jar

Vậy là chúng ta đã sẵn sàng cho một sự thay đổi mới và tốt đẹp hơn.

2. Sử dụng Lombok trong dự án
Chỉ với 1 Annotation @Data mà ta đã có thể hô biến 1 class dài loằng ngằng xuống còn chưa tới 15 dòng, thật thật không thể tin nỗi, thật tuyệt vời.

Annotation được hiểu là một dạng chú thích hoặc một dạng siêu dữ liệu (metadata) được dùng để cung cấp thông tin dữ liệu cho mã nguồn Java. Các chú thích không có ảnh hưởng trực tiếp đến hoạt động của mã mà chúng chú thích.

Giải thích:

  • Như chúng ta đều hiểu là IDE chỉ nhìn thấy những dòng code của bạn hiện tại, và từ đó tham chiếu tới nó, bây giờ bạn không viết hàm Get/Set nữa, thì nó không nhìn thấy, và điều gì sẽ xảy ra nếu bạn viết susudev.getHostName() trong khi function getHostName() không hề tồn tại, 100% là thông báo lỗi đỏ kè đúng không nào.
  • Bản thân Lombok là một thư viện, nó sẽ tự động thêm Get/Set khi project của bạn được build. Tức tự viết thêm code vào class đó trước khi nó thành file jar.
  • Như bạn thấy ở outline, chúng ta vẫn thấy được các hàm set và get, bởi vì chúng ta đã apple Lombok vào Eclipse ở bước trên.
  • Annotation @Data: sẽ có tác dụng generate ra Constructor rỗng, toàn bộ Get/Set, hàm equals, hashCode, toString(). Khi bạn đã đánh dấu 1 class là @Data, thì tại bất cứ đâu trong project. Khi sử dụng tới class này, nó sẽ tự có các function đã generate mà không cần code thêm bất kì dòng nào nữa.

Sau đây là các Annotations thường được sử dụng trong dự án

Constructor gồm có 3 sự lựa chọn như sau:

@NoArgsConstructor: Hàm khởi tạo rỗng.
@AllArgsConstructor: Hàm khởi tạo chứa tất cả thuộc tính.
@RequiredArgsConstructor: Hàm khởi tạo theo yêu cầu. Bạn chỉ muốn hàm khởi tạo có vài thuộc tính do bạn chọn thôi, thì bạn thêm final trước thuộc tính trong class, nó sẽ tự sinh ra Constructor như thế.

@Getter và @Setter
Khi bạn chỉ muốn generate mỗi Get/Set và không muốn dùng @Data vì nó quá nhiều chức năng, thì có thể xài 2 chiêu thức này.

Nhưng giả sử chúng ta chỉ muốn get/set một số thuộc tính, thay đổi phạm vi truy cập của mothod hay hiệu chỉnh thêm code liên quan trong các hàm get/set thì phải làm sao. Với Lombok thì mọi thứ cực kỳ dễ dàng, các bạn xem hình sau nhé.

@Builder câu thần chú dành cho những người lười biếng. Chắc hẳn ai cũng ngại khi viết 1 class Builder cổ điển phải không, tự dưng phải tạo thêm 1 class nữa, gấp đôi số lượng thuộc tính khai báo, gấp đôi số hàm cần viết. Nhưng với LomBok mọi thứ cứ nói là EZZZZZZ.

 

Trong bài viết này mình chỉ giới thiệu những tính năng thường được chúng ta sử dụng, Lombok thực sự còn rất nhiều khẩu quyết và tâm pháp cực kỳ độc đáo nhé (mình không nói ra hết, sợ nói hết các bạn mất vui và không còn cảm giác sung sướng khi mò mẫm trong đám cỏ nữa thì thật là tội lỗi thiện style thiện style), bạn có thể tham thảo và ngiên cứu thêm tại link này https://projectlombok.org/features/all 

Sau khi tu thành chính quả thì hãy nhớ một like cho bài viết nhé. Thank you.

Cảm ơn các bạn đã đọc hết bài viết, theo dõi SuSuDev để cập nhật các bài viết mới và thú vị nhé!

Nếu các bạn có bất kỳ thắc mắc hoặc góp ý xin vui lòng để lại bình luận bên dưới nhé!

Cảm ơn các bạn!

Nhớ ghi nguồn https://susudev.com khi đăng tải lại bài viết này