From 04e8a31a63f7167f793af7fdee43f1320d0e35fa Mon Sep 17 00:00:00 2001 From: Jeongmo Seo Date: Wed, 9 Jul 2025 17:33:12 +0900 Subject: [PATCH] =?UTF-8?q?:sparkles:=20feat:=20No=20resource=20Error=2040?= =?UTF-8?q?0=EC=9C=BC=EB=A1=9C=20=EC=B2=98=EB=A6=AC=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/error/ExceptionAdviceConfig.java | 10 +++++++- .../NoResourceFoundExceptionHandler.java | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/withtime/be/withtimebe/global/error/NoResourceFoundExceptionHandler.java diff --git a/src/main/java/org/withtime/be/withtimebe/global/error/ExceptionAdviceConfig.java b/src/main/java/org/withtime/be/withtimebe/global/error/ExceptionAdviceConfig.java index 6f645cc..35e1f19 100644 --- a/src/main/java/org/withtime/be/withtimebe/global/error/ExceptionAdviceConfig.java +++ b/src/main/java/org/withtime/be/withtimebe/global/error/ExceptionAdviceConfig.java @@ -1,16 +1,24 @@ package org.withtime.be.withtimebe.global.error; +import lombok.RequiredArgsConstructor; +import org.namul.api.payload.code.DefaultResponseErrorCode; import org.namul.api.payload.code.dto.supports.DefaultResponseErrorReasonDTO; import org.namul.api.payload.error.configurer.DefaultExceptionAdviceConfigurer; import org.namul.api.payload.error.configurer.ExceptionAdviceConfigurer; import org.namul.api.payload.writer.FailureResponseWriter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.resource.NoResourceFoundException; @Configuration +@RequiredArgsConstructor public class ExceptionAdviceConfig { + + private final NoResourceFoundExceptionHandler noResourceFoundExceptionHandler; @Bean ExceptionAdviceConfigurer defaultExceptionAdviceConfigurer(FailureResponseWriter failureResponseWriter) { - return new DefaultExceptionAdviceConfigurer(failureResponseWriter); + ExceptionAdviceConfigurer configurer = new DefaultExceptionAdviceConfigurer(failureResponseWriter); + configurer.addAdvice(NoResourceFoundException.class, noResourceFoundExceptionHandler, DefaultResponseErrorCode._BAD_REQUEST.getReason()); + return configurer; } } diff --git a/src/main/java/org/withtime/be/withtimebe/global/error/NoResourceFoundExceptionHandler.java b/src/main/java/org/withtime/be/withtimebe/global/error/NoResourceFoundExceptionHandler.java new file mode 100644 index 0000000..98e194b --- /dev/null +++ b/src/main/java/org/withtime/be/withtimebe/global/error/NoResourceFoundExceptionHandler.java @@ -0,0 +1,23 @@ +package org.withtime.be.withtimebe.global.error; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.namul.api.payload.code.dto.supports.DefaultResponseErrorReasonDTO; +import org.namul.api.payload.handler.ExceptionAdviceHandler; +import org.namul.api.payload.response.BaseResponse; +import org.namul.api.payload.writer.FailureResponseWriter; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.resource.NoResourceFoundException; + +@Component +@RequiredArgsConstructor +public class NoResourceFoundExceptionHandler implements ExceptionAdviceHandler { + + private final FailureResponseWriter failureResponseWriter; + + @Override + public BaseResponse handleException(NoResourceFoundException e, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, DefaultResponseErrorReasonDTO dto) { + return failureResponseWriter.onFailure(dto, "등록되지 않은 URL입니다." + e.getMessage()); + } +}