当前位置: 首页 > news >正文

网站开发入职转正申请书网站404页面查询

网站开发入职转正申请书,网站404页面查询,wordpress只显示到菜单,百度云网盘网页版登录背景:项目中有些接口的入参需要用户id信息,最简单的做法在每个Controller方法调用的时候获取登录信息然后给入参设置用户id,但是这样就会有很多重复性的工作。另一个可行的也更好的方案可以使用HandlerMethodArgumentResolver来实现。 部分示…

背景:项目中有些接口的入参需要用户id信息,最简单的做法在每个Controller方法调用的时候获取登录信息然后给入参设置用户id,但是这样就会有很多重复性的工作。另一个可行的也更好的方案可以使用HandlerMethodArgumentResolver来实现。

部分示例代码如下:

1、需要用户id的入参基类
@Data
@ToString
public class WarehouseBaseReq implements Serializable {private String userId;
}
2、新增自定义的解析器处理接口入参设置用户id
@Slf4j
@Component
public class LycMethodArgumentResolver implements HandlerMethodArgumentResolver, InitializingBean {@Autowiredprivate RequestMappingHandlerAdapter adapter;private HandlerMethodArgumentResolver delegate;@Overridepublic void afterPropertiesSet() throws Exception {List<HandlerMethodArgumentResolver> argumentResolvers = adapter.getArgumentResolvers();List<HandlerMethodArgumentResolver> resolverList = new ArrayList<>(argumentResolvers);// 用自定义的resolver代理decorateResolvers(resolverList);adapter.setArgumentResolvers(resolverList);}@Overridepublic boolean supportsParameter(MethodParameter methodParameter) {return delegate.supportsParameter(methodParameter);}@Overridepublic Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {Object obj = delegate.resolveArgument(methodParameter,mavContainer,webRequest,binderFactory);// 判断只有当入参是指定类型才设置if (obj instanceof WarehouseBaseReq) {WarehouseBaseReq requestObj = (WarehouseBaseReq)obj;// 从ThreadLocal中获取登录用户信息UserDto userDto = UserThreadLocal.getUser();if (null != userDto) {// 给接口入参设置用户idrequestObj.setUserId(userDto.getId());}}return obj;}private void decorateResolvers(List<HandlerMethodArgumentResolver> resolverList){for (int i=0; i<resolverList.size();i++){HandlerMethodArgumentResolver resolver = resolverList.get(i);if (resolver instanceof RequestResponseBodyMethodProcessor){this.delegate = resolver;resolverList.set(i,this);break;}}}
}
3、模拟查询仓库的入参
@Data
@ToString(callSuper = true)
public class WarehouseDto extends WarehouseBaseReq {private Long warehouseId;private String warehouseName;private String warehouseCode;
}
4、模拟查询仓库的controller方法
@RestController
@RequestMapping("/web/warehouse")
public class WarehouseController {@Autowiredprivate WarehouseBizService warehouseBizService;@RequestMapping("/testById")public BizRsp<WarehouseDto> testQueryById(@RequestBody WarehouseDto warehouseDto) {log.info("testQueryById方法执行,warehouseDto:{}",warehouseDto);LearingAssert.notNull(warehouseDto.getUserId(),"用户id不能为空");return BizRspUtil.success(warehouseBizService.queryById(warehouseDto));}
}
5、postman中模拟调用接口,入参只需要传递其他参数,结构如下:

{
“warehouseId”:1
}

自此调用方无需传递用户id,controller的方法也无需写重复代码设置用户id即可实现统一添加接口入参参数的效果。
在spring中还有其他一些处理器,可在一些场景下帮助我们更好的实现一些功能。

参考博客:
[1] spring中的各种处理器
[2]方法参数解析器

http://www.yayakq.cn/news/994620/

相关文章:

  • 设计一个网站重点是什么中国空间站官网
  • 沈阳企业网站怎样制作0建设营销型网站步骤
  • 互联网如何做旅游网站网站设计网站开发优化
  • 网站建设与维护税率网站建设平台官网
  • seo综合桂平seo关键词优化
  • 九江建设公司网站蓝牙小程序开发教程
  • 个人网站模板下载义乌有什么网络公司
  • 做的好的农产品网站营销型网站建设指导原则
  • 网站用wordpress还是wpwordpress添加logo
  • dw网站制作手机软件下载网站有二维码吗
  • wordpress 子目录建站河北建设工程信息网停用公告
  • 苏南网站建设措美网站建设
  • 模块网站开发合同网络规划设计师 招聘
  • 买书的网站排名温州网站改版哪家好
  • 盘锦网站建设公司国内做网站上市公司
  • 网站可行性织梦网站做自适应
  • 南京成旭通网站建设公司怎么样荆门seo
  • 设计网站卖钱网站要做几个备案
  • 欢迎进入中国建设银行网站批量做网站
  • 做软装设计能用到的网站有哪些济南 外贸网站建设
  • 全景网站模版东莞南城电子网站建设
  • 国外免费个人网站空间小说网站源码html
  • 上海推广网站做汽车配件生意的网站
  • 大城 网站旅游网站建设注册
  • 商丘做网站多少钱网站开发和app的区别
  • 网站建设服务领域做网站多大上行速度
  • 刚做的网站关键字能搜到么苏州网站设计公司简介
  • 最便宜 双网站建设烟台H5网站设计
  • 如何网站建设平台wordpress评论详情页
  • 做企业网站模板可以seo网站 开发 成本