Spring Boot 4-mikrotjänster och REST API:er · Lektion

Bean-validering med @Valid

Validera request body med annoteringar.

Lektion 1 av 413 steg

Bean-validering med @Valid är en gratis lektion i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Spring Boot 4-mikrotjänster och REST API:er, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Översikt över Bean Validation

Bean Validation (JSR-380, Jakarta Validation) låter dig deklarera begränsningar med annoteringar på DTO-fält och sedan validera objekt mot dem. Spring Boot integrerar detta så att inkommande request bodies kontrolleras automatiskt.

Lägg till beroendet

Validerings-API:t och en implementation (Hibernate Validator) följer med via validation-starter. När du lägger till den aktiveras annoteringsbaserad validering i controllers.

<!-- pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Begränsningar på en DTO

Annotera fält med begränsningar. Varje begränsning beskriver en regel som värdet måste uppfylla, samt ett valfritt meddelande som visas när regeln bryts.

public class CreateUserRequest {
    @NotBlank
    private String name;
    @Email @NotNull
    private String email;
    @Size(min = 8, max = 64)
    private String password;
    @Min(18)
    private int age;
    // getters/setters
}

Vanliga begränsningar

Standardannoteringarna täcker de flesta behov:

  • @NotNull — värdet får inte vara null
  • @NotBlank — strängen måste innehålla annat än blanksteg
  • @NotEmpty — samlingen eller strängen får inte vara tom
  • @Size, @Min, @Max, @Email, @Pattern

Utlös validering med @Valid

Annotera parametern för request body med @Valid i en controller. Spring validerar den innan metodkroppen körs och avbryter anropet med ett fel om valideringen misslyckas.

@PostMapping("/users")
public ResponseEntity<Void> create(@Valid @RequestBody CreateUserRequest req) {
    userService.create(req);
    return ResponseEntity.status(HttpStatus.CREATED).build();
}

Vad händer vid fel

Om valideringen misslyckas kastar Spring MethodArgumentNotValidException för en @RequestBody. Som standard leder detta till 400 Bad Request, så ogiltig indata når aldrig servicelagret.

Anpassade meddelanden

Åsidosätt standardmeddelandet för varje begränsning med attributet message, eller lägg meddelanden i ett resursbunt för internationalisering.

@Size(min = 8, message = "Password must be at least 8 characters")
private String password;

Validera sökvägs- och frågeparametrar

Om du vill validera enskilda metodparametrar (inte en DTO) placerar du begränsningarna direkt på dem och lägger till @Validated på klassnivå så att validering på metodnivå aktiveras.

@Validated
@RestController
public class ProductController {
    @GetMapping("/products")
    public List<Product> list(@RequestParam @Min(1) int page) {
        return service.page(page);
    }
}

Kapslad validering

Validering går inte automatiskt ner i kapslade objekt. Märk det kapslade fältet med @Valid så att även dess begränsningar kontrolleras.

public class OrderRequest {
    @NotNull
    @Valid
    private AddressDto shippingAddress;
    // ...
}

Validera samlingar

Om du vill validera varje element i en samling placerar du @Valid på samlingsfältet. Därefter utvärderas begränsningarna för varje objekt.

public class CartRequest {
    @NotEmpty
    private List<@Valid LineItem> items;
    // ...
}

Valideringsgrupper

Valideringsgrupper låter samma DTO tillämpa olika regler i olika sammanhang (till exempel vid skapande jämfört med uppdatering). Annotera begränsningarna med ett gruppgränssnitt och validera mot den gruppen.

public interface OnCreate {}

public class UserDto {
    @Null(groups = OnCreate.class)
    private Long id; // must be null when creating
}

Snabb kontroll

Testa din förståelse av @Valid.

Sammanfattning

Bean Validation skyddar dina indata.

  • Lägg till spring-boot-starter-validation
  • Deklarera begränsningar som @NotBlank, @Size och @Email på DTO:er
  • Utlös validering med @Valid på request bodies; fel ger svaret 400
  • Använd @Validated för validering på parameternivå
  • Kapslade objekt och samlingar behöver ett eget @Valid
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
24
Lektioner
93

Vanliga frågor

Är lektionen ”Bean-validering med @Valid” gratis?

Ja – hela texten till ”Bean-validering med @Valid” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Spring Boot 4-mikrotjänster och REST API:er, kan Ni uppgradera till CoddyKit PRO. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bean-validering med @Valid”?

Validera request body med annoteringar. Ni övar på Spring Boot 4-mikrotjänster och REST API:er med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Spring Boot 4-mikrotjänster och REST API:er?

Du behöver inga förkunskaper. Utbildningen i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Bean-validering med @Valid”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Spring Boot 4-mikrotjänster och REST API:er-lektionen?

Ja. Varje Spring Boot 4-mikrotjänster och REST API:er-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Bean-validering med @Valid
  2. Anpassade validatorer
  3. @ControllerAdvice och @ExceptionHandler
  4. Problemdetaljer (RFC 7807)
← Tillbaka till Spring Boot 4-mikrotjänster och REST API:er