Lombok java da projeye entegre edilebilen kod kısalığını ve temizliğini sağlayan bir kütüphanedir.

Yaptığı işi açıklamak gerekirse hemen her sınıfta kullanılan setter , getter  , toString , constructor , equals ve hashCode metotlarını sınıf için kendi oluşturur.

İşte bu olay bize kod kısalığı ve kod temizliği getirir.

Lombok Kurulumu

Eğer intellij idea kullanıyorsanız ,File > Setting >Plugins’e tıklayalım, MarketPlace’ i seçelim 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ı ekleyelim.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.08.31.png
Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.09.31.png

Yukarıda görüldüğü gibi lombok bende zaten yüklü.

Lombokun Maven bağımlılığı için ;

https://mvnrepository.com/artifact/org.projectlombok/lombok

Lombok Kullanımı

@Getter  -> yazıldığı alanın getter metodunu oluşturur.

@Setter  -> yazıldığı alanın  setter metodunuoluşturur.

@Data    -> yazıldığı sınıftaki getter ,setter ,toString equals ve HashCode metotlarını oluşturur.

@AllArgsConstructor -> sınıftaki tüm alanların ekli olduğu bir constructor oluşturur.      

@NoArgsConstructor -> parametresiz constructor üretir.

@NonNull -> Bu anatasyon ile  null kontrolü yapabiliriz. Eğer gelen değer null’sa NullPointerException hatası fırlatır.

Daha fazlası için https://projectlombok.org/api/lombok/package-summary.html adresine bakabilirsiniz.

Lombok Örneği

İntellij Ultimateyi açalım.

New project kısmından Maven proje oluşturalım.Ben proje sdksı olarak Java 8 kullanacağım.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.15.34.png

Projenin group id kısmına com,artifact id kısmına da lombok-ex girelim.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.18.19.png

Son olarak proje adına lombok-ex diyerek projemiziz oluşturalım.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.21.22.png

Daha sonra Enable Auto  Import deyin (sol altta gelecek).Projeye eklediğimiz frameworkler otomatik olarak projeye import edilecektir.

src/main/java içerisinde lombok adlı bir paket oluşturalım.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2019-11-19-at-09.24.32.png

lombok paketi içerisinde Person adlı bir class tanımlayalım.

public class Person { private int id; private String name; private String surname; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; }
}

Lombok kullanmadan id,name,surname alanlarından oluşan bir pojo sınıf oluşturduk.Görüldüğü üzere getter,setter,toString methotlarını,her bir property için elle tanımladık.

Şimdi aynı sınıfı lombok kullanarak oluşturalım.

İlk önce lombok dependecysini pom.xmle ekleyelim.

 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <scope>provided</scope> </dependency>
</dependencies>

lombok paketi içerisinde PersonLombok adlı bir class oluşturalım ve Person pojosunu lombok kullanarak tekrardan tanımlayalım.

@Data
public class PersonLombok { private int id; private String name; private String surname;
}

Görüldüğü üzere ne kadar temiz ve kısa şekilde Person pojosunu oluşturduk.

Görüldüğü üzere Person sınıfı ile PersonLombok sınıfı aslında aynı işi yapıyor ama lombok bize kod kısalığı sağlıyor ve karmaşıklığı azaltıyor mesela 100 propertilik lik bir sınıf olduğunu düşünün lombok bize büyük bir sadelik sağlardı.

Projenin Github Linki : https://github.com/susimsek/lombok-ex

Slack Kanalımın Linki ;

https://join.slack.com/t/javadevelopercorp58/shared_invite/enQtODM3NzU5NDMzMjA1LWQ1YjFlZGE5MTI0ZDNjZDdlNGE4ZDE4NmM0NTBiODJlMTJiYmZjMjJiZTY3NzI0MTc5ZjJhZmQxN2MyMTlmYjU

Daha fazla konu içeriği ve çeşitliliği istiyorsanız slack kanalımı takip edebilirsiniz.

Responses

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir