웹개발을 하다보면 공통적으로 처리해야 할 것들이 생김 (ex. 로그인처리, 권한체크 등…) →공통업무에 관련된 코드를 페이지별로 작성한다면 중복코드 발생 , 서버 부하 , 유지 보수 어려움 등의 문제가 발생한다.
즉, 공통된 업무는 따로 빼서 관리를 하는게 적합!
Spring 에서는 이럴 때 3가지 방법이 존재한다. → Filter / Interceptor / AOP
흐름
- Filer, Interceptor, AOP는 각각의 역할을 수행하며 특정 상황에서 필요에 따라 조합해서 사용.
- 요청 → request > filter > Servlet > Interceptor > AOP > Controller 순서로 실행.
- Interceptor, AOP, Controller : Spring Context Filter : Web Context
공통점
▪ 애플리케이션에서 요청 처리를 조작하고, 제어할 수 있는 기능을 제공한다. ▪ 애플리케이션의 로직을 제어하고, 코드의 중복을 제거하고, 코드의 유지보수성을 높이는 데에 기여할 수 있는 공통적인 목표를 가지고 있다.
Filter
💡 Filter는 서블릿 컨테이너에서 제공하는 기능(스프링 독자적 기능 X)으로, HTTP 요청을 가로채서 요청과 응답에 대한 정보를 조작하거나, 필터링하여 요청을 처리하는 기능을 수행합니다.
- 스프링 컨텍스트가 아니라 웹 컨텍스트에 속하며, 스프링 컨테이너가 아니라 웹컨테이너(톰캣) 에 의해 관리
- 웹 어플리케이션에서 클라이언트의 요청을 처리하기 전후로 요청과 응답을 변경하거나 처리하는 역할
- 모든 서블릿에 대해 적용이 되므로 로그인 여부, 인코딩 처리, 파일 업로드 등의 공통 로직을 처리할 때 주로 사용.
- FilterChain을 통해 여러 필터를 연쇄적으로 동작하게 할 수 있다.
Interceptor
💡 인터셉터(Interceptor)는 스프링에서 AOP(Aspect-Oriented Programming)을 구현하기 위한 기술 중 하나로, 컨트롤러(Controller)에 들어오는 요청(Request)과 컨트롤러가 반환하는 응답(Response)을 가로채서 필요한 처리를 할 수 있도록 하는 인터페이스입니다.
- 컨트롤러 실행 전후의 요청과 응답을 가로채서 처리
- 핸들러 실행 전/후에만 적용이 되므로 컨트롤러에서만 처리하도록 구현된 로직이나 권한체크와 같은 비즈니스 로직을 처리할 때 사용
AOP
💡 AOP는 Aspect Oriented Programming의 약어로, 관점 지향 프로그래밍이라고 번역됩니다. AOP는 OOP(Object Oriented Programming)의 한계를 극복하고, 객체지향 개발을 보완하는 프로그래밍 패러다임입니다.
- 애플리케이션 전체에서 적용되는 공통 로직을 분리 → 개발을 용이하게 하는 기술
- 로깅, 보안, 트랜잭션 초리 등에 사용
- 프록시를 이용하여 타깃객체의 메소드 호출을 가로챔 → Filter나 Interceptor와는 다른 방식으로 동작한다.
(추가공부…)Dispatcher Servlet / sevlet / requestParam / Tomcat, Thymeleaf
노션 정리(1차특강 숙제)
'스파르타 기술면접' 카테고리의 다른 글
프로세스와 스레드 (0) | 2023.04.17 |
---|---|
List / Set / MAp, HashMap (0) | 2023.04.16 |
DI의 방식 중 필드 vs 생성자 주입 방식 (0) | 2023.04.11 |
DI 방식, FIlter / Interceptor / AOP (0) | 2023.03.30 |
MSA , 제네릭(3일차) (0) | 2023.03.30 |