본문 바로가기

Spring

(3)
AOP가 동작하는 원리 프로그래머스 데브코스 중간 프로젝트가 끝났습니다. 그래서 최종 프로젝트가 되기 전에 스프링 강의 때 배웠던 내용을 복습할 겸 강의 중에서 제일 이해하기 어려웠던 AOP에 대해서 공부하고 정리해보고자 합니다. 그럼 출발~ AOP ( Aspect Oriented Programming ) AOP는 관점 지향 프로그래밍입니다. 쉽게 말해 어떤 로직을 기준으로 핵심 기능과 부가기능으로 나누고 그 관점을 기준으로 각각을 모듈화 하겠다는 것입니다. 글보다는 간단한 코드 예시로 알아보도록 하겠습니다. @RequiredArgsConstructor public class OrderService { private final OrderRepository orderRepository; public Order orderItem(..
Spring에서의 예외 처리 및 에러 페이지 서블릿에서 기본 예외 처리 클라이언트로부터 요청이 들어오면 흐름은 다음과 같습니다. WAS -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 (예외 발생) 여기서 예외가 발생하면 throw 된 예외는 다시 아래와 같이 전달됩니다. WAS 컨트롤러 (뷰 반환) 참고 : 에러 요청은 dispatcherType.ERROR로 설정해서 보내기 때문에 필터를 무시하고, 인터셉터에서는 에러 페이지들을 exclude 함으로써 무시할 수 있습니다. 하지만, 이 흐름을 위해서 개발자가 예외 코드에 따른 url을 매핑시켜야 하고, 예외 종류에 따라 에러 페이지를 만들고 예외 처리용 컨트롤러를 만들어야 합니다. 다행스럽게도 스프링 부트는 이 모든 걸 대신해줍니다. 스프링 부트 - 에러 페이지 스프링 부트는 기본적으로 Bas..
Parameter를 원하는 대로~♪♫ : ArgumentResolver 정리 데브코스 강의 실습을 따라 하던 와중에 다음과 같은 코드가 있었다. @PostMapping("/customers/new") public String addNewCustomer(CreateCustomerRequest createCustomerRequest) {...} 서블릿으로 개발할 때는 항상 HttpServletRequest로 request 객체를 받고 필요한 파라미터를 꺼내서 썼는데, 스프링에서는 어떻게 CreateCustomerRequest처럼 개발자가 원하는 타입으로 받을 수 있을까? 디버깅을 통해 비밀을 파헤쳐보자. 컨트롤러의 메소드는 누가 호출할까? Spring MVC의 흐름을 보면 Controller는 HandlerAdapter가 호출한다. HandlerAdapter를 들여다보자. publi..