Project Lombok | لوم بوک
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
Boilerplate Code (کدهای بویلرپلیت)
کدهایی که برای پیادهسازی ساختار کلاس ضروری هستند اما منطق تجاری خاصی ندارند و بارها تکرار میشوند؛ مانند متدهای Getter، Setter، سازندهها و متدtoString. -
Annotation (انوتیشن)
برچسبهایی که با علامت@شروع میشوند و به لومبوک دستور میدهند که در زمان کامپایل، کدهای خاصی را به صورت خودکار تولید کند. -
Bytecode (بایتکد)
کدی که پس از کامپایل فایلهای.javaتولید شده و در فایلهای.classقرار میگیرد. لومبوک کدهای تولید شده را مستقیماً در این سطح تزریق میکند. -
Delombok (دیلومبوک)
فرآیندی که در آن انوتیشنهای لومبوک حذف شده و کدهای معادل جاوا (که توسط لومبوک تولید شده بودند) به صورت متنی جایگزین میشوند تا کد به حالت استاندارد بازگردد.
نکات مهم مصاحبهای
-
Project Lombok چیست و چه هدفی دارد؟
یک کتابخانه جاوا است که با استفاده از انوتیشنها، حجم کدهای تکراری را کاهش داده و باعث میشود برنامهنویس به جای نوشتن کدهای روتین، بر روی منطق اصلی برنامه تمرکز کند. -
تفاوت عملکرد لومبوک با قابلیت Generate در IDE چیست؟
IDE کدها را در فایل سورس (Source Code) تولید میکند که باعث شلوغی کلاس میشود، اما لومبوک کدها را در زمان کامپایل به Bytecode اضافه میکند؛ بنابراین سورسکد تمیز باقی میماند اما متدها در زمان اجرا در دسترس هستند. -
انوتیشن
@Dataشامل چه مواردی است؟
این یک انوتیشن ترکیبی است که معادل استفاده همزمان از@Getter،@Setter،@ToString،@EqualsAndHashCodeو@RequiredArgsConstructorمیباشد. -
چرا برای استفاده از لومبوک به نصب پلاگین در IDE نیاز داریم؟
از آنجا که متدها در سورسکد وجود ندارند و در زمان کامپایل ساخته میشوند، بدون پلاگین، IDE نمیتواند متدهایی مثلgetName()را شناسایی کند و خطای قرمز نمایش میدهد.
مثال یا سناریوی کاربردی
فرض کنید کلاسی به نام Book داریم. بدون لومبوک باید دهها خط کد برای فیلدها بنویسیم. با لومبوک مراحل به این صورت خلاصه میشود:
- تعریف فیلدها: متغیرهای کلاس (مانند
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بالای آن فیلد استفاده کنید. -
محدود کردن دامنه: لومبوک را میتوان به جای کل کلاس، فقط بالای یک فیلد خاص استفاده کرد تا فقط برای همان فیلد Getter یا Setter ساخته شود.
-
Refactor: با راست کلیک روی انوتیشن و انتخاب
Refactor -> Lombok -> Delombokمیتوانید کد تولید شده توسط لومبوک را مشاهده و به کد استاندارد تبدیل کنید. -
نکته نسخه جاوا: در نسخههای جدید جاوا (۱۷ به بعد)، برای کلاسهای دادهای ساده (Data Carrier)، استفاده از
Recordنسبت به انوتیشن@Valueدر لومبوک اولویت دارد.
