注解参数解析,如果某个参数中有这个注解就会被解析为此值
@Component
@Slf4j
public class XXXXArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(XXXX.class);
}
@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest request, WebDataBinderFactory webDataBinderFactory) throws Exception {
//这里做一些逻辑来处理参数
return pin;
}
}
处理程序拦截器,拦截匹配的请求,做相关的业务处理。
@Slf4j
@Component
public class LoginXXXInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//做一些处理
}
}
将处理器和拦截器注册入mvc
@Configuration
public class WebMvcAdapter extends WebMvcConfigurationSupport {
/**
* 登录拦截器
*/
@Resource
private LoginXXXInterceptor loginInterceptor;
@Resource
private RequestTimesLimitInterceptor requestTimesLimitInterceptor;
@Resource
private XXXXArgumentResolver xXXXArgumentResolver;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**");
registry.addInterceptor(requestTimesLimitInterceptor).addPathPatterns("/**");
super.addInterceptors(registry);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(xXXXArgumentResolver);
super.addArgumentResolvers(argumentResolvers);
}
}