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

设计素材网站线上nba排行榜最新排名

设计素材网站线上,nba排行榜最新排名,网站设计项目书,做注册任务赚钱的网站背景:项目中有些接口的入参需要用户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.mnyf.cn/news/47539.html

相关文章:

  • 网站建设报价如何做营销推广
  • 涿州做网站建设数字营销服务商seo
  • 教育房地产 网站建设今天上海最新新闻事件
  • 吉林省软环境建设办公室网站网络营销的真实案例分析
  • 怎样才能申请网站如何快速优化网站排名
  • 做街机棋牌上什么网站发广告seo有些什么关键词
  • 文艺小清新ppt模板seo优化轻松seo优化排名
  • 建个人网站需要哪些长沙百度推广排名优化
  • 云端互联网站建设线上推广的渠道和方法
  • asp个人网站seo是什么意思的缩写
  • 淮安网站定制长沙官网seo
  • 制作的网站百度信息流投放技巧
  • asp个人网站怎么建设数据分析培训机构哪家好
  • 网站动态背景欣赏腾讯云1元域名
  • 网站设计开发中的具体步骤优化方案电子版
  • 金融门户网站模版今日新闻国家大事
  • 电商网站用php做的吗高报师培训机构排名
  • wordpress .po 在哪里seo关键词优化培训班
  • 网站策划书优势怎么分析排名优化网站seo排名
  • 网站开发人员需求分析seo查询5118
  • 视频分享网站怎么做的今天的新闻头条
  • 网站备案系统验证码出错一站式媒体发稿平台
  • 贵阳讯玛网站建设网站排名优化师
  • 怎么给客户谈做网站高端网站建设哪家便宜
  • 做抖音的网站网络营销产品概念
  • 江苏建设管理中心网站广州:推动优化防控措施落
  • 机械行业网站 方案百度知道问答平台
  • 广州seo网站多少钱怎么宣传自己新开的店铺
  • 怎么做网站的浏览栏拉新推广赚钱的app
  • 常用的外贸b2b网站交换链接营销的典型案例