2025-11-24
오늘 배운 것
1. Spring AOP 주요 개념 서술형 정리
Spring AOP는 비즈니스 로직과 부가 기능(공통 관심사)을 분리하기 위한 기술이다. 핵심 아이디어는 핵심 로직 코드에 부가 기능을 직접 넣지 않고, 프록시(proxy)를 사용해 메서드 호출 전·후에 필요한 기능을 끼워 넣는 방식으로 동작한다.
AOP에서 사용되는 핵심 용어는 다음과 같다.
-
Aspect(애스펙트)
공통 관심사(로깅, 트랜잭션, 보안 기능 등)를 모듈화한 단위이다.
여러 Advice와 Pointcut을 하나의 기능 단위로 묶어 표현하며, “부가 기능 덩어리”라고 할 수 있다.
-
JoinPoint(조인포인트)
AOP를 적용할 수 있는 실행 지점을 뜻하며, Spring AOP에서는 메서드 실행 시점만 JoinPoint가 된다.
즉, Advice가 적용될 수 있는 모든 메서드가 JoinPoint다.
-
Pointcut(포인트컷)
JoinPoint 중 Advice를 적용할 대상을 선별하는 조건식이다.
JoinPoint 전체 중 일부를 필터링하여 “어떤 메서드에 부가 기능을 적용할지” 정한다.
-
Advice(어드바이스)
실제로 적용되는 “부가 기능 코드”이다. 실행 시점에 따라 다음과 같이 구분된다.
- Before: 메서드 실행 직전
- After: 실행 종료 후(성공/실패 무관)
- AfterReturning: 정상 실행 후
- AfterThrowing: 예외 발생 시
- Around: 메서드 호출 전후 전체 감싸기
Spring AOP의 목적은 핵심 비즈니스 로직과 부가 기능을 깔끔하게 분리하여 유지보수성을 높이는 것이며,
실행 과정에서 프록시가 원본 객체를 감싸 Pointcut 조건에 맞는 메서드 호출 시 필요한 Advice를 대신 실행해준다.
2. Spring WebMVC 요청 처리 흐름 (1~11단계)
Spring WebMVC는 클라이언트의 요청을 DispatcherServlet을 중심으로 다음과 같은 절차로 처리한다.
-
클라이언트가 HTTP 요청을 DispatcherServlet으로 전송한다.
DispatcherServlet은 모든 요청을 받는 프런트 컨트롤러다.
-
DispatcherServlet이 HandlerMapping에게 어떤 핸들러(Controller)를 호출할지 조회한다.
URL 패턴과 매핑 정보를 기반으로 호출 대상 컨트롤러를 찾는다.
- HandlerMapping이 해당 요청을 처리할 Handler 정보를 반환한다.
-
DispatcherServlet이 HandlerAdapter에게 핸들러 실행을 요청한다.
HandlerAdapter는 핸들러 타입에 맞게 메서드 호출 방식을 조정한다.
- Controller가 Service 등을 호출해 비즈니스 로직을 수행한다.
-
Controller가 처리 결과를 Model의 데이터를 requestScope에 담아 DispatcherServlet으로 반환한다.
Model의 데이터는 Request Scope에 저장되어 View에서 사용된다.
- DispatcherServlet이 반환된 View 이름을 기반으로 ViewResolver에게 실제 View를 찾도록 요청한다.
- ViewResolver가 View 이름에 해당하는 JSP/Thymeleaf 등의 View 객체를 반환한다.
- DispatcherServlet이 View에게 화면 렌더링을 요청한다.
- View는 Model 데이터를 참고하여 HTML 등 화면을 구성한다.
- 렌더링된 최종 결과가 HTTP Response로 클라이언트에게 전달된다.