1:继承HttpServletRequestWrapper
public class ParameterRequestWrapper extends HttpServletRequestWrapper {
private Map params;
private final byte[] body;
public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
body = JSON.toJSONString(params).getBytes(Charset.forName("UTF-8"));
}
2: Spring JoinPoint 切面 动态代理反射获取参数 公共父类 或者方法
@Aspect
@Configuration
public class ShardingControllerAdvice {
先从HttpServletRequest获取header
@Autowired(required = false) private HttpServletRequest httpServletRequest;
@Before("execution(* com.core.service.controller.*.*(..))")
public void permissionCheck(JoinPoint point) {
if (point != null && !CollectionUtil.isEmpty(point.getArgs())) {
String tenantCode = httpServletRequest.getHeader("tenantCode");
for (Object item : point.getArgs()) {
if (item instanceof BaseRequest) {
BaseRequest request = (BaseRequest) item;
再 request.set...
break;
}
}
}
}
}
3:springmvc的WebDataBinder
@InitBinder
public void initBinder(WebDataBinder binder, HttpServletRequest request) {
System.out.println("============应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器");
try {
String headers = request.getHeader("tenantCode");
BaseRequestVO vo = (BaseRequestVO)binder.getTarget();
vo.setTenantCode("123");
} catch (Exception e) {
log.error(":{}", e.getMessage());
}
}
方法中的参数直接会赋值