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:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
</dependency>

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.

package com.ilkaygunel.pojo;

public class Person {
	private String name;
	private String surname;
	private String city;
	private String telephoneNumber;

	public Person(String name, String surname, String city, String telephoneNumber) {
		this.name = name;
		this.surname = surname;
		this.city = city;
		this.telephoneNumber = telephoneNumber;
	}

	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;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getTelephoneNumber() {
		return telephoneNumber;
	}

	public void setTelephoneNumber(String telephoneNumber) {
		this.telephoneNumber = telephoneNumber;
	}
}

Şöyle de basitçe bir Main sınıfımız olsun:

package com.ilkaygunel.main;

import com.ilkaygunel.pojo.Person;

public class MainClass {

	public static void main(String[] args) {
		Person person = new Person("Ali Emrah", "Pekesen", "Los Angelas", "(202)358-0000");
		System.out.println(person.getName()+" "+person.getSurname()+" "+person.getCity()+" "+person.getTelephoneNumber());
	}

}

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:

package com.ilkaygunel.pojo;

import lombok.Getter;
import lombok.Setter;

public class Person {
	@Getter @Setter String name;
	@Getter @Setter String surname;
	@Getter @Setter String city;
	@Getter @Setter String telephoneNumber;

	public Person(String name, String surname, String city, String telephoneNumber) {
		this.name = name;
		this.surname = surname;
		this.city = city;
		this.telephoneNumber = telephoneNumber;
	}
}

Ş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:

package com.ilkaygunel.pojo;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@AllArgsConstructor
public class Person {
	@Getter @Setter String name;
	@Getter @Setter String surname;
	@Getter @Setter String city;
	@Getter @Setter String telephoneNumber;
}

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:

package com.ilkaygunel.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;

@AllArgsConstructor
@Data
public class Person {
	String name;
	String surname;
	String city;
	@NonNull String telephoneNumber;
}

Main sınıfındaki Person objesini şu şekilde oluşturup çalıştırırsak hata alırız:

Person person = new Person("Ali Emrah", "Pekesen", "Los Angelas", null);

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