Project Lombok | لوم بوک
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
Boilerplate Code (کدهای بویلرپلیت)
کدهایی که برای پیادهسازی ساختار کلاس ضروری هستند اما منطق تجاری خاصی ندارند و بارها تکرار میشوند؛ مانند متدهای Getter، Setter، سازندهها و متد toString.
Annotation (انوتیشن)
برچسبهایی که با علامت @ شروع میشوند و به Lombok دستور میدهند که در زمان کامپایل، کدهای خاصی را بهصورت خودکار تولید کند.
Bytecode (بایتکد)
کدی که پس از کامپایل فایلهای .java تولید شده و در فایلهای .class قرار میگیرد. Lombok کدهای تولید شده را مستقیماً در این سطح تزریق میکند.
Delombok (دیلومبوک)
فرآیندی که در آن انوتیشنهای Lombok حذف شده و کدهای معادل Java (که توسط Lombok تولید شده بودند) بهصورت متنی جایگزین میشوند تا کد به حالت استاندارد بازگردد.
نکات مهم مصاحبهای
Project Lombok چیست و چه هدفی دارد؟
یک کتابخانه Java است که با استفاده از انوتیشنها، حجم کدهای تکراری را کاهش داده و باعث میشود برنامهنویس بهجای نوشتن کدهای روتین، بر روی منطق اصلی برنامه تمرکز کند.
تفاوت عملکرد لومبوک با قابلیت Generate در IDE چیست؟
IDE کدها را در فایل سورس (Source Code) تولید میکند که باعث شلوغی کلاس میشود، اما Lombok کدها را در زمان کامپایل به Bytecode اضافه میکند؛ بنابراین سورسکد تمیز باقی میماند اما متدها در زمان اجرا در دسترس هستند.
انوتیشن @Data شامل چه مواردی است؟
این یک انوتیشن ترکیبی است که معادل استفاده همزمان از @Getter، @Setter، @ToString، @EqualsAndHashCode و @RequiredArgsConstructor میباشد.
چرا برای استفاده از لومبوک به نصب پلاگین در IDE نیاز داریم؟
از آنجا که متدها در سورسکد وجود ندارند و در زمان کامپایل ساخته میشوند، بدون پلاگین، IDE نمیتواند متدهایی مثل getName() را شناسایی کند و خطای قرمز نمایش میدهد.
مثال یا سناریوی کاربردی
فرض کنید کلاسی به نام Book داریم. بدون Lombok باید دهها خط کد برای فیلدها بنویسیم. با Lombok مراحل بهاین صورت خلاصه میشود:
۱. تعریف فیلدها: متغیرهای کلاس (مانند id و title) را تعریف میکنیم.
۲. افزودن انوتیشنها: بهجای نوشتن متدها، انوتیشنهای لازم را بالای کلاس قرار میدهیم.
۳. استفاده: در کلاس اصلی، بهراحتی از متدهای تولید شده استفاده میکنیم.
نمونه کد:
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private Long id;
private String title;
private String author;
}
// نحوه استفاده در کد
Book myBook = new Book(1L, "Clean Code", "Robert C. Martin");
System.out.println(myBook.getTitle()); // استفاده از گتر تولید شده
System.out.println(myBook); // استفاده از تو-استرینگ تولید شده
بیشتر بدانید
Exclusion در ToString
اگر نمیخواهید فیلد خاصی (مثل رمز عبور یا ID) در متد toString نمایش داده شود، میتوانید از @ToString.Exclude بالای آن فیلد استفاده کنید.
محدود کردن دامنه
Lombok را میتوان بهجای کل کلاس، فقط بالای یک فیلد خاص استفاده کرد تا فقط برای همان فیلد Getter یا Setter ساخته شود.
Refactor
با راستکلیک روی انوتیشن و انتخاب Refactor -> Lombok -> Delombok میتوانید کد تولید شده توسط Lombok را مشاهده و به کد استاندارد تبدیل کنید.
نکته نسخه جاوا
در نسخههای جدید Java (۱۷ به بعد)، برای کلاسهای دادهای ساده (Data Carrier)، استفاده از Record نسبت به انوتیشن @Value در Lombok اولویت دارد.
