๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

1.์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>
implementation 'jakarta.validation:jakarta.validation-api'
implementation 'org.hibernate.validator:hibernate-validator'

 

2.DTO ํด๋ž˜์Šค์— ์œ ํšจ์„ฑ annotation ๋ถ™์ด๊ธฐ

import jakarta.validation.constraints.*;

public class UserDTO {

    @NotBlank(message = "์ด๋ฆ„์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.")
    private String name;

    @Email(message = "์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์•„์š”.")
    @NotBlank(message = "์ด๋ฉ”์ผ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.")
    private String email;

    // ๊ธฐํƒ€ ํ•„๋“œ + getter/setter
}

 

3.controller์—์„œ @Valid ๋ถ™์ด๊ธฐ

@PutMapping("/user")
public ResponseEntity<?> update(@RequestBody @Valid UserDTO userDTO) {
    // ์œ ํšจ์„ฑ ํ†ต๊ณผ ์‹œ ์‹คํ–‰
    return ResponseEntity.ok("Success!");
}

 

4.์˜ˆ์™ธ ๋ฉ”์„ธ์ง€ ์ฒ˜๋ฆฌ

package com.example.demo.global;

import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestControllerAdvice
public class ValidationExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<List<String>> handleValidationException(MethodArgumentNotValidException ex) {
        List<String> errors = ex.getBindingResult()
                .getFieldErrors()
                .stream()
                .map(FieldError::getDefaultMessage)
                .toList();

        return ResponseEntity.badRequest().body(errors);
    }
}

 

 

๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•