Java Validation Annotation'ları
Spring-Boot uygulamalarında modellerimizi oluştururken validasyon yapabileceğimiz kullanışlı birkaç kütüphane mevcut bu yazıda bunlardan birinden ve kullanabileceğimiz Annotation'lardan bazılarından söz edeceğim. Java Bean'lerinin doğrulanmasında standart framework olarak kullanılan JSR 380'den faydalanacağız.
Kullanıcıdan alacağımız input'lara validasyon uygulamak oldukça temel bir işlem. Bu inputlara doğrulama yapmak bize büyük kolaylık sağlayacaktır.
JSR 380
JSR 380 Bean Validasyonu için bize Java API'si sağlar. Bu versiyon Java 8 ve üzerinde kullanabileceğimiz Optional ve LocalDate'i de destekleyen Annotationlara sahiptir. JSR 380 hakkında daha fazla bilgi almak için bu adrese göz atabilirsiniz.
Dependency
Bu özellikleri kullanmak için dependency'lerinize aşağıdaki dependency'yi eklemeniz yeterli olacaktır.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
</dependency>
Gelelim Kullanımına
@NotNull
@NotEmpty
private String username;
@NotNull : Bu annotation'u alan property'nin null olmamasını sağlar, property null olarak set edilmeye çalışıldığında buna engel olacaktır.
@NotEmpty : Özelliğin boş(empty) veya null olmadığını doğrular; String, Collection, Map veya Array'lere uygulanabilir.
@NotBlank
private String name;
@NotBlank : Yalnızca text alanlara uygulanabilir ve özelliğin null olmasını ve whitespace olmasını engeller.
@AssertTrue
private boolean itsTrue;
@AssertFalse
private boolean itsFalse;
@AssertTrue : Bu annotation'a sahip olan özelliğin true değere olduğunu doğrular.
@AssertFalse : Bu annotation'a sahip olan özelliğin false değere olduğunu doğrular.
@Email
private String email;
@Email : Bu annotation'a sahip olan özelliğin geçerli bir e-posta formatına sahip olduğunu doğrular.
@Min(18)
@Max(99)
private int age;
@Min - @Max : Bu annotationlar property'nin minimum değerden küçük, maksimum değerden büyük olmamasını sağlar.
@Positive
private int positive;
@PositiveOrZero
private int positiveOrZero;
@Negative
private int negative;
@NegativeOrZero
private double negativeOrZero;
@Positive : Nümerik değerlere uygulanabilir değerin pozitif olmasını zorunlu kılar.
@PositiveOrZero : Nümerik değerlere uygulanabilir değerin pozitif ya da sıfır olmasını zorunlu kılar.
@Negative : Nümerik değerlere uygulanabilir değerin negatif olmasını zorunlu kılar.
@NegativeOrZero : Nümerik değerlere uygulanabilir değerin negatif ya da sıfır olmasını zorunlu kılar.
@Past
private LocalDateTime pastDate;
@PastOrPresent
private LocalDateTime pastOrPresentDate;
@Future
private LocalDateTime futureDate;
@FutureOrPresent
private LocalDateTime futureOrPresentDate;
@Past : Tarih alanlarına uygulanabilir değerin geçmiş bir tarih olmasını zorunlu kılar. Java 8'de gelen Tarih tiplerine de uygulanabilir.
@PastOrPresent : Tarih alanlarına uygulanabilir değerin geçmiş bir tarih ya da şimdi olmasını zorunlu kılar. Java 8'de gelen Tarih tiplerine de uygulanabilir.
@Future : Tarih alanlarına uygulanabilir değerin gelecek bir tarih olmasını zorunlu kılar. Java 8'de gelen Tarih tiplerine de uygulanabilir.
@FutureOrPresent : Tarih alanlarına uygulanabilir değerin gelecek bir tarih ya da şimdi olmasını zorunlu kılar. Java 8'de gelen Tarih tiplerine de uygulanabilir.
Annotation'lar Collection elemanlarına da uygulanabilir
List<@NotBlank String> preferences;
Annotation'lar için mesaj belirleme
@Email(message = "Email alanı email formatına uymalıdır")
private String email;
Annotation'un içine message set edilerek gösterilecek mesaj belirlenebilir.
Sonuç
Örnek olarak yazdığım Spring-Boot uygulamasının kodlarını GitHub sayfamda bulabilirsiniz. Yorumlara aklınıza takılanları yazabilirsiniz.
Keyifli kodlamalar :)