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

设计素材网站线上抖音搜索seo

设计素材网站线上,抖音搜索seo,绵阳市做公司网站,qq客户端登录背景:项目中有些接口的入参需要用户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.mmbaike.com/news/33160.html

相关文章:

  • 网站怎么做才有效果双11销量数据
  • 网页设计公司的市场定位seo前景
  • 如何把网站排名做的靠前南宁百度seo
  • 深圳集团网站开发网站开发公司电话网站需要改进的地方
  • 长沙制作手机网站的公司搜索优化seo
  • 做网站前期需求分析收费么北京自动seo
  • 十堰网站制作价格汕头seo推广外包
  • 淘宝客服推销做网站的技巧it培训机构排名及学费
  • 中山建设局网站首页seo课程哪个好
  • 网站制作流程图杭州百度人工优化
  • 代理彩票网站做链接合肥网络优化推广公司
  • 工艺品网站怎么做口碑营销的好处
  • 水利部网站公示建设成都网站建设公司
  • 买网站账号做推广经典营销案例100例
  • 遵义网约车平台哪家好seo关键词排行优化教程
  • 天津品牌网站制作如何推广自己的网站
  • 安徽省城乡建设网站数据库营销
  • 目录浏览的网站站长之家whois查询
  • 源码做网站网络营销与传统营销的整合
  • seo 网站案例semi final
  • 自己做电影网站有没有钱赚广州白云区新闻头条最新消息今天
  • 网络营销就是网络推广对吗百度搜索关键词排名优化
  • 给自己做网站免费发布产品的网站
  • wordpress网站加密码破解百度收录提交申请网站
  • 学网站建设需要什么工具珠海网站建设优化
  • 哪个网站做香烟回收seo网站优化技术
  • 十大不收费的网站百度百度推广
  • 美容类网站模版长沙seo智优营家
  • 网站建设公司 2018seo北京网站推广
  • 广州番禺专业做网站网络推广服务