1、编写拦截器
package com.ne.scrm.org.interceptor;
import com.software.boot.common.ThreadContext;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static com.ne.scrm.org.api.consts.MyConstants.DEALER_ID;
import static com.ne.scrm.org.api.consts.MyConstants.EMP_ID;
/**
* @author Yunugi
* @since 2020-12-21
*/
public class CommonDataHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
ThreadContext.put(EMP_ID, request.getHeader(EMP_ID));
ThreadContext.put(DEALER_ID, request.getHeader(DEALER_ID));
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ThreadContext.remove(EMP_ID);
ThreadContext.remove(DEALER_ID);
}
}
2、注册
package com.ne.scrm.org.config;
import com.ne.scrm.org.interceptor.CommonDataHandlerInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.net.URLDecoder;
/**
* Make use of MVC pattern to process args.
* Called before calling HandlerAdapter.
*
* @author Yungui
* @since 20201221
*/
@Configuration
@Slf4j
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(headerDataInterceptor()).addPathPatterns("/**");
}
@Bean
public CommonDataHandlerInterceptor headerDataInterceptor() {
return new CommonDataHandlerInterceptor();
}
}