[SpringBoot] 인터셉터(Interceptor) 구현

해니·2023년 12월 21일
0

SpringBoot

목록 보기
9/24
post-thumbnail


출처: https://veneas.tistory.com/entry/Spring-Boot-스프링-부트-인터셉터-적용-HandlerInterceptor

💡 DispatcherServlet이란?
가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프런트 컨트롤러(Front Controller)



인터셉터(Interceptor)란?

  • DispatcherServletController(Handler) 사이에서 요청에 대한 작업을 전/후로 가로챈다.
  • Spring의 Context(ApplicationContext) 등록되며, 일종의 빈이다.
    • Spring Context(영역)에 있으므로 다른 빈을 활용 가능하기에 때문에 주로 비즈니스 로직과 관련 있는 공통 작업을 처리한다.
      ex) 로그인(인증) 체크, 권한(인가) 체크 등에 주로 사용
    • 여러 개 등록하여 사용할 수 있다.



인터셉터 구현

  • 인터셉터는 HandlerInterceptor 인터페이스를 implements 해서 구현할 수 있다.

인터셉터 주요 메서드

  • preHandler()
    • 컨트롤러를 경유(접근)하기 직전에 실행되는 메서드
    • 컨트롤러의 메서드에 매핑된 특정 URI가 호출됐을 때 실행된다.
  • postHanler() : 컨트롤러를 경유(접근) 한 후, 즉 화면(View)으로 결과를 전달하기 전에 실행되는 메서드
  • afterCompletion() : view페이지가 렌더링 되고 난 후에 실행된다.



WebMvcConfigurer 인터페이스 구현

  • 인터셉터 클래스가 작동할 수 있도록 빈(Bean)으로 등록이 필요하다.
    • WebMvcConfigurer 인터페이스를 구현한 설정 클래스를 구현해서 인터셉터를 등록해야 한다.

@Configuration
public class WwwManagerWebMvcConfigurerConfig implements WebMvcConfigurer {

    private final DefaultInterceptor defaultInterceptor;
 	
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(defaultInterceptor)
                .addPathPatterns(
                        "/**"
                )
                .excludePathPatterns(
                        "/",
                        "/resources/**",
                        "/favicon*"
                );    	
    }
 
 }
  • WebMvcConfigure
    • 해당 인터페이스를 구현하면 @EnableWebMvc의 자동 설정을 베이스로 가져가며, 개발자가 원하는 설정까지 추가할 수 있다.
  • addInterceptors()
    • 애플리케이션 내에 인터셉터를 등록한다.
    • addPathPatterns() : 인터셉터를 호출하는 주소와 경로를 추가한다.
    • excludePathPatterns() : 메서드의 인자로 전달하는 주소(URI)와 경로(Path)는 인터셉터 호출에서 제외시킨다.





출처
스프링 부트(Spring Boot) - 인터셉터(Interceptor) 적용하기
[Spring Boot] 스프링 부트 인터셉터 적용 (HandlerInterceptor)
Spring Boot 인터셉터 적용

profile
💻 ⚾️ 🐻

0개의 댓글