Project Lombok
Lombok Nedir ?
Lombok, Java projesi geliştirirken IDE’ye entegre edilebilen bir anotasyon ile kod üretme (code generation) kütüphanesidir. Lombok ile daha temiz ve daha az kod yazmış oluruz.
Java’da proje geliştirirken yaygın olarak yapmamız gereken bazı işlemler bulunmakta. Bunlar projemizin iş tarafına gerçek bir değer getirmez iken kodumuzun çok fazla ayrıntı barındırmasını zorunlu hale getiriyor.
Örnek olarak Bir POJOda (Plain Old Java Object) Sürekli Get-Set, Constructor, toString vb. methodları yazmamız gerekiyor. Birçok sınıfta olması gereken bu methodlar o kadar uzuyor ki sınıfların uzunluğu ve kod karmaşıklığı artıyor, clean code’dan uzaklaşıyoruz. Hatta artık tutoriallarda sıklıkla gördüğümüz bir şey var;
Evet üstteki kodda yorum satırında gördüğünüz üzere bu methodlar uzun uzun yazılmak istenmiyor.
Tam da burada Lombok hayatımıza giriyor. Yazılım geliştirirken kendimizi daha mutlu ve üretken hale getirmek için tercih sebebimiz oluyor.
Şimdi sıklıkla kullanılan Lombok anotasyonlarına ve ne yaptıklarına bir bakalım;
@Getter: Ait olduğu alanın get methodunu oluşturulmuş olur.
@Setter: Aynı şekilde anatosyonu olduğu fieldin setter methodunu oluşturur.
@Data : @Getter + @Setter işlemlerini ve bunun yanında toString ve EqualsAndHashCode methodların yaptığı işlemleri yapar. Sınıfın üstüne eklenen bir anatosyondur. Sınıf içindeki tüm field lerin getter ve setter methodlarını oluşturur. POJO larda ve Modellerde genellikle tercih edilir.
@AllArgsConstructor: Sınıfın Constructorını üretir.Bu Constructor sınıftaki tüm fieldleri parametre olarak almıştır.
@NoArgsConstructor: Parametresiz Constructor üretir.
@NonNull : Bu anatosyan ile null kontrolü yapabiliriz. @NonNull notasyonu null gelen değer için NullPointerException fırlatmaktadır.
Şimdi sıradan bir Java Model örneğine bakalım. Task adında bir Java sınıfım bulunmakta. Bu model içinde 4 field ve ihtiyacım olan methodlar var.
Tüm bunları yaptıktan sonra sınıfın büyüklüğü aşağıda gördüğünüz gibi 67 satıra ulaşmış oluyor. Equals and hashcode methodları eklersem bu daha da artacak. Eğer biz bu sınıfı Lombok kullanarak yazsaydık nasıl olurdu bir bakalım;
Evet, aynı özelliklere sahip sınıfımızdaki kod sayısı 67'den 23 satıra düştü. Bu iki örnekten de görüleceği üzere yeni sınıfımızda okunurluk arttı ve kod karmaşıklığı azaldı. Daha hızlı geliştirme yaptık diyebiliriz.
Aşağıdaki resimde sağ tarafında Structure’a baktığımızda sınıf içindeki methotların Lombok tarafından oluşturulduğunu aytıntılı olarak görebiliriz. Constructor, Getter-Setter Lombok anotasyonları sayesinde oluşturuldu.
Bunun yanında daha bir çok anotasyon bulunmakta. Dilerseniz diğer Lombok anotasyonlarınada buradan bakabilirsiniz. https://projectlombok.org/api/lombok/package-summary.html
Lombok’u IDE ve projelerimize entegre etme
Eğer IntelliJ IDEA kullanıyorsanız;
File > Settings > Plugins’e tıklayalım, Browse repositories … ve Arama çubuğuna lombok plugin yazalım, çıkan sonucu yükleyelim ve Idea’yı restart edelim. Ardından projemizin bağımlılık yönetim aracına(maven veya gradle) lombok bağımlılığını koyalım. Hepsi bu kadar.
Lombok bağımlılığı pom.xml’ e eklenmeli;
Eğer Eclipse kullanıyorsanız entegrasyonu şu şekilde yapabilirsiniz;
Öncelikle projenize lombok bağımlılığını eklemelisiniz. Eğer maven kullanıyorsanız pom.xml’e yukardaki bağımlılığı ekleyebilirsiniz. Ekledikten sonra local maven repodan ilgili jarı bulalım. Bende aşağıdaki dizinde;
C:\Users\oguz\.m2\repository\org\projectlombok\lombok\1.16.20
Bu jarın bulunduğu dizinde java -jar lombok-1.16.20.jar komutu çalıştırabilir veya jara double-click yapabiliriz. Bunun sonucunda lombok Ide bulamadım uyarısı verecektir. Bu uyarıyı kapatın ve Project Lombok Installer’da, Specify location... tıklayalım. Kullanmakta olduğunuz Eclipse’in olduğu dizine gidelim ve eclipse.exe’yi seçelim. Idemizin eklendiğini göreceğiz. Install/Update diyelim ve Quit Installer ile çıkalım. Eclipse’i tekrar açtığımızda işlem tamamlanmış olacaktır.
Eğer projeye başlarken sıklıkla kullanılan https://start.spring.io kullanıyorsanız, projeyi ilk başta yaratırken bu bağımlılık ile gelmesini sağlayabilirsiniz. Aşağıda görebileceğiniz üzere bağımlılık eklerken lombok yazdığınızda çıkacaktır.
Sonuç olarak kullanması oldukça kolay olan Lombok bize daha konforlu bir geliştirme ortamı sunuyor.