728x90 반응형 전체 글602 [Spring] API 예외처리 - HandlerExceptionResolver API 예외 처리 - 시작 목표 API 예외 처리는 어떻게 해야할까? HTML 페이지의 경우 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있다. 그런데 API의 경우에는 생각할 내용이 더 많다. 오류 페이지는 단순히 고객에게 오류 화면을 보여주고 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. API도 오류 페이지처럼 처음으로 돌아가서 서블릿 오류 페이지 방식을 사용해보도록 하 WebServerCustomizer 다시동작 package hello.exception; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.spr.. 2023. 12. 1. [Spring] 서블릿 예외 처리(필터&인터셉터), 이를 보완한 스프링 부트 오류 페이지 서블릿 예외 처리 - 필터 목표 예외 처리에 따른 필터와 인터셉터 그리고 서블릿이 제공하는 DispatchType 이해하기 예외 발생과 오류 페이지 요청 흐름 1. WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생) 2. WAS `/error-page/500` 다시 요청 → 필터 → 서블릿 → 인터셉터 → 컨트롤러(/error-page/500) → View 오류가 발생하면 오류 페이지를 출력하기 위해 WAS 내부에서 다시 한번 호출이 발생한다. 이때 필터, 서블릿, 인터셉터도 모두 다시 호출된다. 그런데 로그인 인증 체크 같은 경우를 생각해보면, 이미 한번 필터나, 인터셉터에서 로그인 체크를 완료했다. 따라서 서버 내부에서 오류 페이지를 호출한다고 해서 해당 필터나 인터셉트가 .. 2023. 11. 28. [Spring] 예외 처리와 오류 페이지 - 서블릿 예외 처리 및 오류 페이지 작동 원리 https://start.spring.io/ 위에 첨부한 프로젝트를 다운받고, build.gradle로 열기 build.gradle 은 아래와 같다.plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } depend.. 2023. 11. 28. [Spring] 로그인 처리 시 ArgumentResolver 활용하기 ArgumentResolver는 아래의 포스팅에 설명이 되어있다. https://drcode-devblog.tistory.com/498 [Spring] 요청 매핑 핸들러 어뎁터 구조 그렇다면 HTTP 메시지 컨버터는 스프링 MVC 어디쯤에서 사용되는 것일까? SpringMVC 구조 핵심은 애노테이션 기반의 컨트롤러, 그러니까 @RequestMapping 을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdap drcode-devblog.tistory.com ArgumentResolver 를 이용해서 로그인 회원을 좀 더 편리하게 찾아볼 수 있다. HomeController - 추가 @GetMapping("/") public String homeLoginV3ArgumentResolver(.. 2023. 11. 21. [Spring] 로그인 처리 - 스프링 인터셉터 스프링 인터셉터 스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다. 둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다 스프링 인터셉터 흐름 HTTP 요청 → WAS → 필터 → 서블릿 → 스프링 인터셉터 → 컨트롤러 - 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다. - 스프링 인터셉터는 스프링 MVC가 제공하는 기능이기 때문에 결국 디스패처 서블릿 이후에 등장하게 된다. 스프링 MVC의 시작점이 디스패처 서블릿이라고 생각해보면 이해가 될 것이다. - 스프링 인터셉터에도.. 2023. 11. 21. [Spring] 로그인 처리 - 서블릿 필터 서블릿 필터 공통 관심 사항 보통 사이트를 보면 사용자의 권한에 따라, 로그인 한 사용자만 들어갈 수 있는 관리 페이지가 있다. 로그인 화면에서 로그인 하지 않은 사용자에게는 상품 관리 버튼을 보이지 않기 때문에 문제가 없어보이지만, http://localhos:8080/items 를 직접 호출하면 상품관리 화면에 들어갈 수 있다. 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성하면 되겠지만, 등록, 수정, 삭제, 조회 등등 상품관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 더 큰 문제는 향후 로그인과 관련된 로직이 변경될 때이다. 작 성한 모든 로직을 다 수정해야 할 수 있다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cro.. 2023. 11. 20. 이전 1 ··· 5 6 7 8 9 10 11 ··· 101 다음 728x90 반응형