Lombok Nedir? Nasıl Kullanılır?
Merhabalar arkadaşlar.
Bu yazıda size Lombok Kütüphanesi‘nden bahsetmeye çalışacağım.
Lombok Nedir?
Lombok ana mantık olarak projelerimizde kullandığımız bir takım metotları bir satırlık notasyona indirgemeyi amaç edinmiş bir kütüphanedir. Bunlar arasında en bilindikleri Get/Set metotlarıdır. Az sonra işi örneğe döktüğümüzde ne demek istediğimi anlayacaksınız.
Şimdi örnek kodlarla Lombok’un nasıl kullanıldığına bakalım.
Öncelikle IDE’mizde bir Maven projesi açalım ve şu bağımlılığı pom.xml dosyamıza eklemek sureti ile Lombok kütüphanesini projemize ekleyelim:
Lombok kullanabilmek için sadece yukarıda yaptığımız işlem eğer benim en sevdiğim IDE olan NetBeans IDE’yi kullanıyorsanız yeterli. Fakat Eclipse, IntelliJ Idea gibi IDE’ler kullanıyorsanız yeterli değil arkadaşlar. Lombok’un bir de kurulum işlemi yapılması, IDE’nin ona gösterilmesi gerekiyor. IntelliJ Idea için plugin kurulması gerekiyor fakat bende IntelliJ’nin lisansı sürümü yok o yüzden onu anlatamıyorum. Eclipse IDE için ise .jar dosyası ile kurulum yapılması gerekiyor. Ona değinelim :)
Eclipse IDE’nizde Lombok kullanmak için local maven reponuzun içinden, .m2 klasörünüzden Lombok’un .jar dosyasına ulaşın ve ona çift tıklayın. Bendeki hali şöyle:
.jar doyasına çift tıklamanız akabinde şöyle bir ekran gelecek. Sizden kullandığınız IDE’yi Lombok’a göstermenizi sitiyor. Can’t find IDE penceresi için OK deyip kapatın. Akabinde Specify Location butonuna tıklayarak IDE’nizi gösterin. Ben elimdeki Eclipse IDE’yi gösteriyorum. IDE’yi gösterme işlemi eclipse.ini dosyasının gösterilmesi vasıtası ile olur.
Şimdi burdaki Install/Update butonuna tıklıyoruz. Eclipse IDE için bu işlem daha önce yapılmadı ise Lombok kurulacak, yapıldı ise sürüm güncellemesi yapılacak. Ben daha önce yapmadığım için Eclipse IDE’me Lombok kurulacak. Install/Update butonuna tıkladığınızda IDE’yi yeniden başlatmanızı söyleyen bir ekran çıkacak. OK butonuna tıklayın ve Eclipse’i yeniden başlatın.
NetBeans kullananların pom.xml’e eklemek dışında bir şey yapmalarına gerek olmadan hazırlardı, Eclipse kullananlar da şimdi hazırlar :)
Şimdi yeni bir adet POJO olarak nitelendirebileceğimiz bir Java sınıfı oluşturalım. POJO nedir derseniz açılımı Plain Old Java Object olan bu kavram bir Java sınıfın içerisinde en basit hali ile alanlar ve o alanların get-set metotlarının barınmasını ve başka bir sınıf tarafından kısıtlanmamış olmayı amaçlayan kavramdır. Şöyle bir Person sınıfımız olsun.
Şöyle de basitçe bir Main sınıfımız olsun:
Bu main metodunu çalıştırdığımızda doğal olarak konsolda person objesinin alanlarındaki değerleri göreceğiz.
Şimdi Person.java sınıfı üzerinde Lombok ile ne yapabiliriz ona bakalım. İlk olarak kod içerisinde Getter/Setter metotlarını bir notasyonlara yıkabiliriz. Tüm Getter/Setter metotlarını silelim ve sınıf içindeki alanlarımızı @Getter ve @Setter notasyonları ile işaretleyelim. Şöyle ki:
Şimdi main metodumuzu çalıştıralım:
Gördüğünüz gibi yine aynı çıktıyı aldık.
Peki orada duran Constructor için bir şey yapamaz mıyız? O constructor’dan da kurtulabiliriz. Şimdi constructor’ı silelim ve sınıfı @AllArgsConstructor notasyonu ile işaretleyelim. Akabinde main metodunu yeniden çalıştıralım. Person sınıfının yeni hali şöyle olacak:
Main metodunu çalıştırdığımızda yine aynı çıktıyı alacağız.
Bunların yanında bir de @Data notasyonu bulunmaktadır. Biz an önceki örneğimizde Person sınıfımızdaki nesneleri ayrı ayrı @Getter/@Setter’lar ile işaretlemiştik. Bunun yerine sınıfı @Data notasyonu ile işaretlersek tüm alanlar için Gettter/Setter tanımlanmış olur. Ayrıca Lombok bizim için null check işlemi yapan bir notasyon da bulundurmaktadır. @NonNull notasyonu null gelen değer olur NullPointerException fırlatmaktadır. Bu durumda sınıfımızın yeni hali şöyle olur:
Main sınıfındaki Person objesini şu şekilde oluşturup çalıştırırsak hata alırız:
Bu yazıda anlatacaklarım bu kadar arkadaşlar. Temel olarak Lombok’un ne olduğunu anlatmaya, kullanımı için ne yapmak gerektiğine ve belli başlı bazı özelliklerine değinmiş olduk. Başka bir yazıda görüşene kadar sağlıcakla kalın.
Selam ve Sevgilerimle