반응형
Spring boot - HandlerInterceptorAdapter와 zuul Filter 의 사용시 문제
[문제 발생 내용]
Spring boot application에서 HandlerInterceptorAdapter에 들어오는 사용자의 IP를 체크하는
Interceptor를 넣어서 사용중이었다.
이후 Zuul Gateway api 가 필요하게 되어 을 적용했는데,
Zuul 필터 구성후 인터셉터가 호출이 안되는것이었다.
좀 더 정확하게 이야기하면, Zuul routes 를 타는 경우에만 인터셉터가 호출이 안된다.
[해결 방법]
간단하게 해결이 가능하다, 아래와 같은 Class를 생성해주면 된다.
InstantiationAwareBeanPostProcessorAdapter를 상속받고 zuulMapping에 해당 사용할 인터셉터를 설정해주면 된다
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter;
import org.springframework.cloud.netflix.zuul.web.ZuulHandlerMapping;
import org.springframework.context.annotation.Configuration;
import spectra.attic.coreasset.legacyadapter.intercepter.IpCheckInterceptor;
@Configuration
@RequiredArgsConstructor
public class ZuulHandlerBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter {
@NonNull
// 사용할 인터셉터 class
// HandlerInterceptorAdapter를 상속 구현한 class
private final IpCheckInterceptor ipCheckInterceptor;
@Override
public boolean postProcessAfterInstantiation(final Object bean, final String beanName) throws BeansException {
if (bean instanceof ZuulHandlerMapping) {
val zuulHandlerMapping = (ZuulHandlerMapping) bean;
zuulHandlerMapping.setInterceptors(ipCheckInterceptor);
}
return super.postProcessAfterInstantiation(bean, beanName);
}
}
[다른글 - Zuul API 구성하기]
[프로그래밍/SPRING] - Zuul API GATEWAY - 초간단 설정
'프로그래밍 > SPRING BOOT' 카테고리의 다른 글
RestTemplate GET POST 호출 예제 (0) | 2022.12.16 |
---|---|
Spring boot 에서 logback 적용, 로그 남기기 (0) | 2022.12.12 |
Zuul Exception customize - ERROR 처리하기 (0) | 2022.07.18 |
댓글