반응형
Spring에서 필터와 인터셉터 그리고 AOP는 전부 공통 로직을 분리하여 처리하기 위해서 사용하기 위해서 사용되는 기능이다.
하지만 사용방법과 적용되는 위치의 차이가 있기 때문에 알맞게 사용해야 한다.
큰 구조는 Spring mvc Request 라이프 사이클을 통해 확인할 수 있다. ( AOP는 표시되어 있지 않지만...)
필터(Filter):
- 필터는 서블릿 컨테이너(예: Tomcat, Jetty)에서 요청과 응답을 가로채는 기능이다.
- 주로 요청과 응답의 헤더를 수정하거나 인코딩을 처리하는 등의 작업에 사용된다.
- Spring의 javax.servlet.Filter 인터페이스를 구현하여 사용한다.
- 필터는 web.xml에 등록하여 적용되고, Spring Boot에서는 FilterRegistrationBean을 통해 간편하게 등록하여 사용할 수 있다.
인터셉터(Interceptor):
- 인터셉터는 Spring의 컨트롤러(Controller)에 대한 요청을 가로채는 기능이다.
- 컨트롤러가 실행되기 전에 또는 후에 공통 기능(예: 로깅, 권한 검사, 세션 처리 등)에 사용된다.
- Spring MVC에서 사용되며, HandlerInterceptor 인터페이스를 구현하여 생성된다.
- 인터셉터는 스프링 컨텍스트에 등록되어 애플리케이션의 모든 컨트롤러에 영향을 미친다. (url을 통해 적용 범위 설정 가능)
AOP(Aspect-Oriented Programming):
- AOP는 핵심 기능과 공통 기능을 분리하여 모듈화 하는 프로그래밍 패러다임이다.
- 주요 목표는 코드의 재사용성, 유지 보수성, 가독성을 향상한다.
- 주로 로깅, 트랜잭션 관리, 보안, 캐싱과 같은 공통 관심사를 따로 모듈화 하여 여러 곳에서 재사용할 수 있도록 한다.
- Spring AOP는 프록시 기반으로 동작하며, 주로 런타임에 동작하는 기능을 처리한다.
- AOP는 메서드 레벨에서 적용될 수 있으며, Spring에서는 @Aspect 어노테이션과 함께 @Before, @After, @Around 등의 어노테이션을 사용하여 AOP를 구현한다.
즉, 필터는 서블릿 컨테이너에서 동작(디스패처 서블릿 이전), 인터셉터는 디스패처 서블릿과 각 컨트롤러 사이에서 동작, 마지막으로 AOP는 인터셉터 이후에 동작하게 된다.
전체적인 구조를 잘 그려놓은 다이어그램을 발견해서 공유하고자 가져왔다.
반응형
'Library & Framework > Spring' 카테고리의 다른 글
[spring boot] 스프링 스케줄러 사용해보기 (0) | 2023.10.19 |
---|---|
AOP에 대해 알아보자 (0) | 2023.08.04 |
[Spring boot] war로 배포하기, SpringBootServletInitalizer (0) | 2023.07.22 |
[Spring boot] 설정 정보(application.yml / properties) 분리시키기 - spring profiles (0) | 2023.06.12 |
[Spring boot] 설정 정보 외부에서 관리하기 2 - submodule (0) | 2023.03.21 |