DEV Community

Burak Aykan ÜRER
Burak Aykan ÜRER

Posted on

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>
Enter fullscreen mode Exit fullscreen mode

Gelelim Kullanımına

Validation Annotation'ları

    @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.

Validation Mesajı

Ekler

Örnek olarak yazdığım Spring-Boot uygulamasının kodlarını GitHub sayfamda bulabilirsiniz. Bu post orijinalde blogumda yayınlanmıştır.

Top comments (1)

Collapse
 
sassineasmar profile image
Sassine El-Asmar

Wow this is very good !! Thanks for sharing