Lombok CleanUp
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
- Resource Management
مدیریت منابع به فرآیند آزادسازی منابعی مانند Connection دیتابیس یا PreparedStatement گفته میشود که پس از اتمام کار باید بسته شوند تا از نشت حافظه و مشکلات عملکردی جلوگیری شود.
- Lombok
یک کتابخانه در Java است که با استفاده از انوتیشنهای مختلف، کدهای تکراری (Boilerplate code) را کاهش میدهد و فرآیند توسعه را سریعتر میکند.
- Annotation
نوعی فراداده (Metadata) است که به کد اضافه میشود و به کامپایلر یا ابزارهای دیگر دستورات خاصی را برای اجرا یا تولید کد در هنگام کامپایل میدهد.
- @Cleanup
انوتیشنی در کتابخانه Lombok که وظیفه بستن خودکار منابع را بر عهده دارد. این انوتیشن جایگزینی برای بلوکهای پیچیده try-finally یا try-with-resources است.
- Try-with-resources
یک ویژگی در Java (از نسخه ۷ به بعد) که به برنامهنویس اجازه میدهد منابع را درون پرانتز جلوی try تعریف کند تا پس از اتمام بلوک، بهصورت خودکار بسته شوند.
- Finally Block
بخش پایانی در ساختار مدیریت استثنا که تضمین میکند کدهای داخل آن، چه خطایی رخ دهد و چه رخ ندهد، در انتهای کار اجرا شوند؛ معمولاً برای بستن منابع استفاده میشود.
- Decompiler
ابزاری که فایلهای کامپایلشده (.class) را به کد قابل خواندن توسط انسان (.java) تبدیل میکند تا متوجه شویم در پشت صحنه چه کدهایی توسط ابزارهایی مثل Lombok تولید شده است.
موارد مصاحبه ای
- چرا باید منابع (Resources) را حتماً بست؟
بستن منابعی مثل کانکشنهای دیتابیس ضروری است، زیرا در صورت باز ماندن، منابع سیستم اشغال شده و ممکن است برنامه با افت سرعت یا خطای اتمام ظرفیت منابع مواجه شود.
- تفاوت اصلی @Cleanup با try-with-resources چیست؟
انوتیشن @Cleanup کد را بسیار کوتاهتر و تمیزتر میکند و نیاز به ایجاد بلوکهای تودرتو را از بین میبرد. با این حال، try-with-resources یک استاندارد داخلی Java است، در حالی که استفاده از @Cleanup به کتابخانه Lombok وابسته است.
- انوتیشن @Cleanup در پشت صحنه چگونه کار میکند؟
در زمان کامپایل، Lombok کدی تولید میکند که متغیر مورد نظر را درون یک بلوک try قرار داده و در بخش finally ابتدا چک میکند که متغیر null نباشد و سپس متد close() آن را صدا میزند.
- آیا برای استفاده از @Cleanup نیاز به پیادهسازی اینترفیس خاصی است؟
بهطور پیشفرض، این انوتیشن به دنبال متدی به نام close() در آن شیء میگردد تا آن را صدا بزند.
بیشتر بدانید
- IDE Tip
برای مشاهده تغییراتی که Lombok در کد ایجاد میکند، میتوانید پروژه را clean install کنید و سپس فایل کلاس تولیدشده در پوشه target را باز کنید تا کد نهایی و بازسازیشده را ببینید.
- Development Tool
استفاده از سایتها یا ابزارهای Online Java Decompiler به شما کمک میکند تا بایتکدهای تولیدشده را بررسی کرده و درک عمیقتری از نحوه عملکرد انوتیشنها در پشت صحنه داشته باشید.
- نکته کاربردی
اگر متد بستن منبع شما نامی غیر از close() دارد، میتوانید آن را در مقابل انوتیشن مشخص کنید، مثلاً: (value = "dispose") @Cleanup.
