๋ฐ์ํ
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);
}
}
๊ฒฐ๊ณผ

๋ฐ์ํ
'๐๏ธ ๋ฐฑ์๋ > ๐Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| # @Autowired ๋ณด๋จ ์์ฑ์ ์ฃผ์ ๋ฐฉ์? @RequiredArgsConstructor๋? (0) | 2025.05.28 |
|---|---|
| # QueryDsl ๊ธฐ๋ณธ์ค์ (spring boot 3.x ์ด์) (0) | 2025.05.28 |
| # JPA ๋ฉ์๋, ์กฐ๊ฑด์ฐ์ฐ ํค์๋ ์ ๋ฆฌ (0) | 2025.05.19 |
| # QueryDSL ์กฐ๊ฑด์ ํจ์ ์ ๋ฆฌ (0) | 2025.05.19 |
| # ํ๋ก ํธ์๋์ ๋ฐฑ์๋์์ ๊ฐ๊ฐ ์๊ฐ ํฌ๋งท ์ฒ๋ฆฌํ๋ ์ด์ (Spring Boot + JS) (0) | 2025.05.12 |