在项目中我们往往需要对请求参数在其被Controller层接收前和响应回客户端前做一些公共的操作,比如参数过滤、解密、加密,验签等操作。SpringMVC为我们提供了RequestBodyAdvice和ResponseBodyAdvice这两个接口就很方便的帮助我处理了这些问题。相比过滤器和拦截器更灵活。
RequestBodyAdvice
package com.lpp.encrytdemo.beans;
/**
* 在请求体被读取或转换为对象前,允许我们自定义请求。还允许在其被发送给Controller方法之前作为
*RequestBody对象或请求体被自定义处理
*
*
* 这个接口的实现可以在继承RequestMappingHandlerAdapter 或者用ControllerAdvice注解标注的情况下自动被侦测到
*/
public interface RequestBodyAdvice {
/**
* 首先调用,以确定是否应用此拦截器.
* @param methodParameter the method parameter
* @param targetType the target type, not necessarily the same as the method
* parameter type, e.g. for {@code HttpEntity<String>}.
* @param converterType 所选的转换器类型
* @return 这个拦截器是否被调用
*/
boolean supports(MethodParameter methodParameter, Type targetType,
Class<? extends HttpMessageConverter<?>> converterType);
/**
* 在读取和转换请求体之前第二次调用.
* @param inputMessage the requ