From 53dcca710a8677ca7b8f33ceae45fd6b78035e65 Mon Sep 17 00:00:00 2001 From: mikekks Date: Wed, 3 Dec 2025 23:24:32 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8?= =?UTF-8?q?=ED=8A=B8=20=EC=97=90=EB=9F=AC=20=ED=95=B8=EB=93=A4=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/exception/GlobalExceptionHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/layer-api/src/main/java/org/layer/global/exception/GlobalExceptionHandler.java b/layer-api/src/main/java/org/layer/global/exception/GlobalExceptionHandler.java index d426c978..7a95346f 100644 --- a/layer-api/src/main/java/org/layer/global/exception/GlobalExceptionHandler.java +++ b/layer-api/src/main/java/org/layer/global/exception/GlobalExceptionHandler.java @@ -20,6 +20,7 @@ import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.servlet.resource.NoResourceFoundException; +import jakarta.validation.ConstraintViolationException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -102,4 +103,18 @@ public ResponseEntity handleConversionFailedException(Convers .body(ExceptionResponse.of(HttpStatus.BAD_REQUEST.name(), "요청 파라미터의 형식이 잘못되었습니다.")); } + @ExceptionHandler(ConstraintViolationException.class) + public ResponseEntity handleConstraintViolationException(ConstraintViolationException e) { + log.warn(String.format(LOG_FORMAT, e.getMessage()), e); + + String message = e.getConstraintViolations() + .stream() + .map(v -> v.getPropertyPath() + " " + v.getMessage()) // 예: "title must not be null" + .reduce((m1, m2) -> m1 + ", " + m2) + .orElse("유효하지 않은 값입니다."); + + return ResponseEntity.status(HttpStatus.BAD_REQUEST) + .body(ExceptionResponse.of(HttpStatus.BAD_REQUEST.name(), message)); + } + }