CelloInterceptor파일에는 httpRequest에 개입하기위해 HandlerInterceptor 인터페이스를 상속받아 preHandler와 postHandler를 override한 메소드들이 있습니다.
public class CelloInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception
{
}
@Override
public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView ) throws Exception
{
}
@Override
public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex )
throws Exception
{
}
}
일반적으로 interceptor를 등록하기 위해서는 WebMvcConfigurerAdaptor를 상속받은 Configuration클래스에서
addInterceptor를 override하여 등록하여야합니다.
@Configuration
public class WebMvcConfig extends WebWvcConfigurerAdapter {
@Override
public void addInterceptors( InterceptorRegistry registry ) {
registry.addInterceptor( new CelloInterceptor )
.addPathPattern("/*");
}
}
하지만 MappedInterceptor를 이용하여 일반 Configuration에서 MappedIntercepor의 반환값을 Bean으로 등록하면 Intercepter로 사용가능합니다.
다만, 새롭게 정의된 MappedInterceptor의 우선순위를 위해 Order를 0으로 지정해둡니다 ( @Bean의 디폴트 Order 값은 Ordered.LOWEST_PRECEDENCE, 2147483647 입니다. )
@Order 는 가장 낮은 숫자가 실행 순서가 가장 빠름
@Configuration
public class CelloApplicationConfig
{
@Bean
@Order(0)
public MappedInterceptor celloInterceptor() {
return new MappedInterceptor( new String[]{ "/**" }, new CelloInterceptor( celloInitInfoVo.getJwtSecretKey(), celloInitInfoVo.isAllowPerformanceServiceLog() ) );
}
}
'Spring' 카테고리의 다른 글
[ Spring Boot ] JWT를 이용한 OAuth2 설정 (0) | 2021.12.21 |
---|---|
[ Intellij ] lombok이 적용되지 않을 때 (0) | 2021.10.26 |
[ Maven ] dependency 수동으로 설치하기 (0) | 2021.10.15 |
IoC 와 DI (0) | 2021.10.05 |
Spring Boot 테스트 설정하기 (0) | 2021.05.12 |