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>
Enter fullscreen mode Exit fullscreen mode
Gelelim Kullanımına
@NotNull
@NotEmpty
private String username;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
@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;
Enter fullscreen mode Exit fullscreen mode
Annotation’lar için mesaj belirleme
@Email(message = "Email alanı email formatına uymalıdır")
private String email;
Enter fullscreen mode Exit fullscreen mode
Annotation’un içine message set edilerek gösterilecek mesaj belirlenebilir.
Ekler
Örnek olarak yazdığım Spring-Boot uygulamasının kodlarını GitHub sayfamda bulabilirsiniz. Bu post orijinalde blogumda yayınlanmıştır.
暂无评论内容