Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Java programlama dili için Lombok kütüphanesi hakkında kapsamlı bir eğitim içeriğidir.
- Video, Lombok kütüphanesinin ne olduğu, nasıl çalıştığı ve özellikleri ile başlayıp, Stable ve Expert branch'lerini tanıtmaktadır. Ardından Lombok'un IDE'lere nasıl yükleneceği ve Maven projesi içinde nasıl kullanılacağı gösterilmektedir. Daha sonra getter-setter oluşturma, toString, equals, hashCode, constructor annotation'ları, @Data, @Builder, @UtilityClass ve @AllMethodsInherited gibi çeşitli annotation'ların kullanımı kod örnekleri üzerinden detaylı şekilde anlatılmaktadır.
- Eğitim boyunca Lombok'un kodun daha sade olmasını sağladığı, boilerplate kodları otomatik olarak oluşturduğu ve null pointer hatalarını kontrol etmek için @Nullable annotation'ının kullanımı gibi pratik bilgiler sunulmaktadır. Video, özel sektörde sıkça kullanılan Lombok kütüphanesinin Java kodlamasını nasıl kolaylaştırdığını göstermektedir.
- 00:06Lombok Kütüphanesi Tanıtımı
- Lombok, Java'nın sunmuş olduğu annotation processing özelliğini kullanan, kodu daha sade hale getiren bir kütüphanedir.
- Lombok, compile edilirken oluşturulan annotation'larla şablon kodları otomatik olarak oluşturarak kodun sadeleşmesini sağlar.
- Lombok'un annotation'ları iki farklı branch olarak düşünülebilir: Stable (ispatlanmış) ve Expert (deneysel) alanlar.
- 01:29Lombok'un Çalışma Prensibi
- Lombok, annotation processing kullanarak compile edilirken class file'ların oluştuğu esnada şablon kodları oluşturur.
- Expert alanındaki annotation'lar henüz kararlı hale gelmemiş olabilir ve bazı durumlarda problem yaşatabilir.
- Expert alanındaki annotation'lar zamanla testlerden geçirildikten sonra stable alanına dahil edilebilir.
- 03:58Lombok'u IDE'ye Ekleme
- Lombok'u kullanabilmek için IDE'ye özel bir plugin yüklemek gerekiyor.
- IntelliJ IDEA'da plugin, Preferences > Plugins bölümünden yüklenir ve IDE'yi yeniden başlatmak gerekir.
- Lombok, IntelliJ IDEA, Eclipse, NetBeans, MyClip, Spring Suite, Jabs ve Visual Studio Code gibi birçok IDE'de desteklenmektedir.
- 06:17Lombok'u Proje'ye Ekleme
- Maven projesine Lombok eklemek için dependency eklenmesi gerekir.
- Lombok'un en son versiyonunu projectlombok.org adresinden kontrol edebilirsiniz.
- Proje kaynak koduna bir Java class eklenerek Lombok kullanımı gösterilebilir.
- 09:19Lombok Annotation'ları
- Lombok, get/set metotlarını otomatik olarak oluşturmak için @Getter ve @Setter annotation'larını sağlar.
- Bu annotation'lar hem field'ın başına hem de class'ın başına yazılabilir.
- Field'ın başına yazıldığında sadece o field için, class'ın başına yazıldığında tüm field'lar için get/set metotları oluşturulur.
- 14:58Lombok Annotation'lar ve Get-Set Metotları
- Lombok kütüphanesi sayesinde sınıf üzerinde get ve set metotları otomatik olarak oluşturulabilmektedir.
- Eğer tüm field'lar için get-set metotları istenmiyorsa, @Getter ve @Setter annotation'larının parametreleri kullanılarak istenmeyen field'lar için bu özellikler kapatılabilir.
- @Setter annotation'ında access level parametresi kullanılarak, field'ların setter'larının erişim seviyesi (public, private, package) ayarlanabilir.
- 18:52ToString Annotation
- @ToString annotation, sınıfın toString() metodu için otomatik kod üretir.
- @ToString annotation'ında "of" parametresi kullanılarak sadece belirli field'ların toString() metoduna dahil edilmesi sağlanabilir.
- Lombok annotation'ları kullanıldığında kod satır sayısı önemli ölçüde azalır.
- 21:44Equals ve HashCode Annotation
- @EqualsAndHashCode annotation, sınıfın equals() ve hashCode() metodlarını otomatik olarak üretir.
- Java'da default olarak iki nesnenin eşitliği referans eşitliğiyle belirlenir, ancak @EqualsAndHashCode annotation ile farklı eşitlik kriterleri tanımlanabilir.
- @EqualsAndHashCode annotation'ında "of" parametresi kullanılarak eşitlik kontrolü için hangi field'ların kullanılacağı belirlenebilir.
- 25:37Constructor Annotation'ları
- @NoArgsConstructor annotation, sınıf için parametresiz (boş) constructor üretir.
- @AllArgsConstructor annotation, tüm field'ları parametre alan constructor üretir.
- @RequiredArgsConstructor annotation, final ve non-null field'ları parametre alan constructor üretir.
- 29:22Lombok Annotation'ları
- @AllArgsConstructor, tüm field'ları kullanarak bir contract oluşturmayı sağlar ve erişim belirleyicisini değiştirebilirsiniz.
- @RequiredArgsConstructor, final işaretlenmiş property'lerin constructor içerisinde enjekte edilmesini bekler, aksi takdirde hata verir.
- @Data annotation, @ToString, @EqualsAndHashCode, getter, setter ve record constructor gibi annotation'ları default olarak eklemiş sayılır.
- 35:30Builder Annotation
- @Builder annotation, builder design pattern'ını implemente etmemizi sağlar.
- Builder yöntemi ile nesne instance'ı yaratırken, builder metoduyla başlayıp propertileri seçerek build ederek nesne oluşturulur.
- Builder yöntemi, nesne oluşturulurken daha kontrolü ve okunabilirliği artırır.
- 38:25Utility Class Annotation
- @UtilityClass annotation, utility class'ları için kullanılır ve class'ı otomatikman final yapar.
- Utility class'ın tüm metotlarını statik olarak işaretler ve constructor'ı engeller.
- Utility class'lar statik metotlar içerir ve instance'ın oluşturulmasını istemez, bu annotation bu durumu otomatik olarak sağlar.
- 43:55Annotation Kullanımı ve Kod Azaltma
- Annotation listesi, kod boyutunu azaltmaya yardımcı olur ve 51 satırı yaklaşık 10-15 satıra indirir.
- Builderplate, IDE'den oluşturulan kodları azaltmamızı sağlar.
- Utility sınıfında kullanılan 5-6 adet annotation, kodun daha az satıra indirilmesine yardımcı olur.
- 44:54Null Annotation Kullanımı
- @Null annotation, null pointer'ları kontrol etmek için kullanılır.
- Bu annotation, bir nesnenin null olmaması gerektiğini belirtir ve IDE, bu kontrolü otomatik olarak yapar.
- Eğer null olmayan bir nesne null olabilirse, annotation bu durumu algılayarak kodu compile etmeyi engeller.
- 45:59Kod Örneği ve Hata Kontrolü
- Utility sınıfında trimPerson metoduna null değer gönderilirse, IDE hata bildirir.
- Metod ismi değiştirilerek hangi metodun çağrıldığından emin olunabilir.
- @Null annotation, null pointer exception'ı önleyerek kodun daha güvenilir olmasını sağlar.