출처: https://veneas.tistory.com/entry/Spring-Boot-스프링-부트-인터셉터-적용-HandlerInterceptor
💡 DispatcherServlet이란?
가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프런트 컨트롤러(Front Controller)
DispatcherServlet
와 Controller(Handler)
사이에서 요청에 대한 작업을 전/후로 가로챈다.Context(ApplicationContext)
등록되며, 일종의 빈이다.Context
(영역)에 있으므로 다른 빈을 활용 가능하기에 때문에 주로 비즈니스 로직과 관련 있는 공통 작업을 처리한다.HandlerInterceptor
인터페이스를 implements
해서 구현할 수 있다.preHandler()
postHanler()
: 컨트롤러를 경유(접근) 한 후, 즉 화면(View)으로 결과를 전달하기 전에 실행되는 메서드afterCompletion()
: view페이지가 렌더링 되고 난 후에 실행된다. 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 인터셉터 적용