0Pricing
Java Academy · Ders

Bean Doğrulaması: @NotNull, @Size, @Pattern

DTO'lara Bean Validation kısıtlamaları ek açıklamalarını ekleyin ve denetleyicilerde @Valid ile doğrulamayı başlatın.

Bean Doğrulaması: @NotNull, @Size, @Pattern, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Bileşen Doğrulaması Nedir?

Bileşen doğrulaması (Jakarta Bean Validation 3.0), Java bileşenleri için bildirime dayalı kısıt anotasyonları sağlar. Spring Boot bir doğrulayıcıyı otomatik olarak yapılandırır ve bunu @Valid veya @Validated aracılığıyla çalıştırır.

@NotNull, @NotEmpty, @NotBlank

@NotNull: değer null olmamalıdır. @NotEmpty: null olmamalı ve boş olmamalıdır (dizeler/koleksiyonlar). @NotBlank: null olmamalı, boş olmamalı ve yalnızca boşluk karakterlerinden oluşmamalıdır. Dizeler için @NotBlank kullanmayı tercih edin.

public record CreateUserRequest(
    @NotBlank(message = "Name is required")
    String name,
    @NotBlank @Email
    String email,
    @NotNull
    UserRole role
) {}

@Size ve @Length

@Size(min, max), dizelerin, koleksiyonların, eşlemelerin ve dizilerin boyutunu sınırlar. @Length (Hibernate) yalnızca dizeler üzerinde çalışır. Taşınabilirlik için @Size kullanmayı tercih edin.

@Size(min = 3, max = 50, message = "Name must be 3-50 characters")
private String name;
@Size(min = 1, max = 10, message = "Cart must have 1-10 items")
private List<CartItem> items;

@Min, @Max, @Positive, @Range

Sayısal kısıtlar: kesin sınırlar için @Min/@Max, işaret kısıtları için @Positive/@PositiveOrZero, BigDecimal için @DecimalMin/@DecimalMax kullanılır.

@Min(1) @Max(100)
private int quantity;
@DecimalMin("0.01") @DecimalMax("99999.99")
private BigDecimal price;
@Positive
private long orderId;

Regex Doğrulaması için @Pattern

@Pattern(regexp), dizeleri bir düzenli ifadeye göre doğrular. Telefon numaraları, posta kodları ve özel biçimler için kullanışlıdır.

@Pattern(regexp = "^\\+?[1-9]\\d{7,14}$", message = "Invalid phone number")
private String phone;
@Pattern(regexp = "^[A-Z]{2}\\d{5}$", message = "Invalid postal code (e.g. AB12345)")
private String postalCode;

@Email ve @URL

@Email, e-posta biçimini doğrular (temel RFC 5321). @URL (Hibernate), URL biçimini doğrular. Bu anotasyonlar null değere izin verdiğinden her zaman @NotBlank ile birlikte kullanın.

@NotBlank @Email
private String email;
// Hibernate-specific:
@URL(protocol = "https")
private String profileUrl;

@Past, @Future, @PastOrPresent

Zamansal kısıtlar, tarih ve saat değerlerini doğrular. LocalDate, LocalDateTime, anlık zaman değerleri ve daha fazlasıyla çalışır.

@Past(message = "Birth date must be in the past")
private LocalDate birthDate;
@Future(message = "Expiry must be in the future")
private LocalDate expiryDate;

@Valid ile Doğrulamayı Tetikleme

Bir denetleyici yönteminin parametresine @Valid ekleyin. Spring, nesneyi doğrular; başarısızlık durumunda MethodArgumentNotValidException fırlatır ve 400 Hatalı İstek döndürür.

@PostMapping("/users")
public ResponseEntity<UserDto> create(@Valid @RequestBody CreateUserRequest req) {
    User user = userService.create(req);
    return ResponseEntity.status(201).body(UserDto.from(user));
}

Alanlarda @Valid ile Zincirleme Doğrulama

İç içe nesneleri doğrulamak için sınıf düzeyindeki kısıtlara ek olarak alanı @Valid ile işaretleyin.

public record OrderRequest(
    @NotNull @Valid
    AddressRequest shippingAddress, // validates AddressRequest constraints too
    @Valid @NotEmpty
    List<@Valid LineItemRequest> items
) {}

Doğrulama Grupları

Farklı bağlamlarda farklı kısıtlar uygulamak için grupları kullanın (örneğin, oluşturma ve güncelleme). Grup arayüzüyle işaretleyin ve @Validated(CreateGroup.class) ile tetikleyin.

public interface CreateGroup {}
public interface UpdateGroup {}
public record UserRequest(
    @NotBlank(groups = CreateGroup.class) String password,
    @NotNull(groups = UpdateGroup.class)  Long id
) {}
// Controller:
@PutMapping("/{id}")
public UserDto update(@Validated(UpdateGroup.class) @RequestBody UserRequest req) { ... }

Doğrulama Hatalarını Okuma

Alan hatalarını ayıklamak ve yapılandırılmış hata yanıtları oluşturmak için MethodArgumentNotValidException'ı bir @ControllerAdvice içinde yakalayın.

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Map<String, String>> handleValidation(MethodArgumentNotValidException ex) {
    Map<String, String> errors = new LinkedHashMap<>();
    ex.getBindingResult().getFieldErrors().forEach(e ->
        errors.put(e.getField(), e.getDefaultMessage()));
    return ResponseEntity.badRequest().body(errors);
}

Kısa Kontrol

Bir String'in null olmadığını VE boş veya yalnızca boşluk karakterlerinden oluşmadığını hangi anotasyon doğrular?

Özet

DTO'ları Bileşen doğrulaması kısıtlarıyla işaretleyin. Doğrulamayı tetiklemek için denetleyicilere @Valid ekleyin. Dizeler için @NotBlank, uzunluklar için @Size, regex için @Pattern, tarihler için @Past/@Future kullanın. Hataları @ControllerAdvice içinde yönetin.

Sıkça Sorulan Sorular

“Bean Doğrulaması: @NotNull, @Size, @Pattern” dersi ücretsiz mi?

Evet — “Bean Doğrulaması: @NotNull, @Size, @Pattern” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Bean Doğrulaması: @NotNull, @Size, @Pattern” dersinde ne öğreneceğim?

DTO'lara Bean Validation kısıtlamaları ek açıklamalarını ekleyin ve denetleyicilerde @Valid ile doğrulamayı başlatın. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Bean Doğrulaması: @NotNull, @Size, @Pattern” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bean Doğrulaması: @NotNull, @Size, @Pattern
  2. Özel Kısıtlama Ek Açıklamaları
  3. @ControllerAdvice ile Genel İstisna Yönetimi
  4. RFC 7807 Problem Ayrıntıları ve Tutarlı Hata Yanıtları
← Java Academy Sayfasına Dön