[JAVA] 인터셉터(Interceptor)

2025. 2. 2. 01:10프로그래밍/JAVA

728x90
반응형

📌Java 인터셉터란 무엇인가?

Java에서 인터셉터(Interceptor) 는 주로 요청 처리 흐름을 가로채서 특정 작업을 수행할 수 있도록 해주는 컴포넌트입니다. 인터셉터는 웹 애플리케이션에서 주로 사용되며, 컨트롤러로의 요청 전후에 로직을 삽입하는 방식으로 작동합니다. 이를 통해 로깅, 인증, 권한 검사 등 공통된 기능을 재사용할 수 있게 합니다.

예를 들어 다수의 컨트롤러에 동일한 로직이 들어가는 경우, 로그인 상태나 권한을 확인해야하는 경우에 각각의 컨트롤러에 로직을 구현하는 것이 아닌 컨트롤러 요청 전(preHandle) 인터셉터를 통해 공통적인 작업은 우선 처리할 수 있습니다.

 

 

 

📌인터셉터 메서드의 응답 순서

1. preHandle (요청 처리 전)

  • 클라이언트의 요청이 들어오면 먼저 preHandle 메서드가 실행됩니다.
  • 주로 요청을 가로채서 인증, 권한 검사, 로깅 등을 처리합니다.
  • 만약 preHandle 메서드가 false를 반환하면, 요청 처리 과정이 중단되고 이후 처리가 진행되지 않습니다.

2. Controller (핸들러 메서드)

  • preHandle 메서드가 정상적으로 처리된 후, 요청이 실제 Controller에 전달되어 비즈니스 로직을 수행합니다.

3. postHandle (응답 처리 후)

  • Controller에서 처리가 끝난 후, 응답이 클라이언트로 반환되기 전에 postHandle 메서드가 실행됩니다.
  • 주로 응답 데이터를 수정하거나 추가적인 처리를 할 수 있습니다.

4. afterCompletion (완료 후 처리)

  • 응답이 클라이언트에게 반환된 후, afterCompletion 메서드가 실행됩니다.
  • 요청 처리 과정에서 발생한 예외를 처리하거나, 리소스를 정리하는 등의 후처리를 수행합니다.

인터셉터 응답 순서

 

 

📌인터셉터의 사용 목적과 장점

 

인터셉터를 사용하면 다음과 같은 장점이 있습니다.

  • 공통 처리 로직 분리: 요청 전/후에 반복적으로 처리해야 하는 작업을 인터셉터로 분리함으로써 코드의 재사용성과 유지보수성을 높일 수 있습니다.
  • 성능 향상: 예를 들어, 요청 전후에 특정 조건을 체크하거나 캐시를 관리하는 작업을 인터셉터로 처리할 수 있어 애플리케이션의 성능을 최적화할 수 있습니다.
  • 일관된 처리: 인증, 로깅 등 일관된 처리 로직을 인터셉터에서 관리하면, 코드의 중복을 줄이고 시스템 전반에 걸쳐 일관된 동작을 보장할 수 있습니다.

 

 

 

📌인터셉터와 필터의 차이점

인터셉터와 필터는 모두 요청 처리 흐름을 가로채는 기능을 하지만, 그 동작 방식에는 차이가 있습니다.

  • 필터(Filter): HTTP 요청과 응답을 처리하며, 서블릿 API에서 제공하는 Filter 인터페이스를 구현해야 합니다. 필터는 요청 전후에 처리할 수 있으며, 주로 웹 서버에서 제공하는 기능에 영향을 줍니다.
  • 인터셉터(Interceptor): 주로 프레임워크에서 제공하는 기능으로, Spring MVC에서는 HandlerInterceptor 인터페이스를 구현하여 사용합니다. 인터셉터는 컨트롤러 호출 전후에 동작하며, Spring의 요청 처리 흐름에 맞춰 세밀하게 조작할 수 있습니다.

 

 

 

📌인터셉터 사용 시 고려사항과 결론

인터셉터는 매우 강력한 도구지만, 사용할 때 몇 가지 고려할 점이 있습니다:

  • 성능: 너무 많은 작업을 인터셉터에서 처리하게 되면 애플리케이션 성능에 영향을 줄 수 있습니다. 필요한 부분에만 사용하도록 주의해야 합니다.
  • 순서 관리: 여러 인터셉터를 사용할 경우, 실행 순서가 중요합니다. 인터셉터의 실행 순서를 명시적으로 설정할 수 있어야 하기 때문에 이를 관리하는 방법을 잘 알아야 합니다.

결론적으로, Java에서 인터셉터는 요청 처리 흐름을 세밀하게 제어하고, 공통된 기능을 재사용하는 데 매우 유용한 도구입니다. 이를 적절히 활용하면 코드 품질을 높이고 애플리케이션의 유지보수를 용이하게 할 수 있습니다.

728x90
반응형