1. AOP와 Interceptor는 왜 사용해야 할까?
예시 1)
1) 아침먹기(젓가락)
- 손씻기
- 샌드위치먹기
- 양치하기
2) 점심먹기(젓가락)
- 손씻기
- 국밥먹기
- 양치하기
3) 저녁먹기(젓가락)
- 손씻기
- 고기먹기
- 양치하기예시 1번과 같이 메서드를 생성하고 코드를 작성할 때, 손 씻기와 양치하기는 중복된 코드이면서 부과적인 로직이다. 각각의 메인 로직은 ‘먹기’를 수행하는 것이다.
이처러 메인 로직 외의 유효성 검사나 인증과 같은 절차는 AOP나 Interceptor 로 Controller 앞 단에서 처리를 할 수 있는데, 이를 이용한다면 Controller에서 코드가 간결해진다.
예시 2)
AOP - @before 손씻기(젓가락) , @after 양치하기(젓가락)
Interface - prehandler 손씻기 , posthandler 양치하기
1) 아침먹기(젓가락)
- 샌드위치먹기
2) 점심먹기(젓가락)
- 국밥먹기
3) 저녁먹기(젓가락)
- 고기먹기2. AOP와 Interceptor의 이해

그림과 같이 AOP와 Interceptor는 많은 Controller 앞에서 이를 처리해주는 위치에 존재한다.
Controller 앞단으로 확대에서 위치를 확인해보면 다음 순서
(필터 - 디스패처 서블릿 - 인터셉터 - AOP - 컨트롤러) 와 같다.

**AOP(Aspect-Oriented Programming)**와 Interceptor는 모두 소프트웨어 개발에서 횡단 관심사(공통 기능)를 처리하고, 코드의 중복을 줄이며, 유지보수성을 향상시키기 위해 사용됩니다. 이들은 특정 기능이나 로직을 여러 부분에서 일관되게 적용해야 할 때, 이를 효율적으로 관리하고 적용할 수 있도록 도와줍니다.
3. AOP 란?
AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)은 소프트웨어 개발 패러다임의 하나로, 프로그램의 핵심 비즈니스 로직과는 별도로 관심사(관점, Aspect)를 분리하여 모듈화하는 방법입니다. 이를 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 하며, 코드의 중복을 줄일 수 있습니다.
다시 말해 AOP는 부과적인 로직들을 앞단에서 처리(리플렉션과 프록시 패턴 사용) 메서드를 분석해서 매개변수 확인하는 역할을 한다
4. Interceptor 란?
**Interceptor(인터셉터)**는 소프트웨어 디자인 패턴의 일종으로, 주로 요청(request)과 응답(response)의 흐름을 가로채서 특정 작업을 수행하는 데 사용됩니다. 웹 애플리케이션, 특히 프레임워크(예: 스프링, 스트럿츠)에서 자주 사용되며, 요청 전후에 공통적인 작업(예: 인증, 로깅, 트랜잭션 관리 등)을 수행하기 위해 활용됩니다.
Interceptor는 AOP와는 다르게 매개변수를 분석할 수 없고, 기본적인 session과 같은 정보들만 분석이 가능하다
AOP와 Interceptor는 throw를 사용하여 오류를 Dispatcher Servlet으로 보내 Global Exception Handler에서 오류를 처리하는 방식이 가능하다.
하지만 Fiter는 DS 앞에 있기 때문에 오류를 직접 처리해야 한다.
Share article