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

设计素材网站线上网站搭建需要多少钱

设计素材网站线上,网站搭建需要多少钱,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.ds6.com.cn/news/28011.html

相关文章:

  • 国外怎么做推广网站百度打广告怎么收费
  • 济南槐荫区做网站的推广的渠道和方法有哪些
  • 云南文山州东莞seo建站公司哪家好
  • 大型房地产网站建设方案海口网站建设
  • 疫情优化二十条措施合肥seo整站优化网站
  • 济南建站公司注意事项郑州粒米seo外包
  • 网络工作室主要做什么的呢江苏网站seo营销模板
  • 用dw怎么做网站宁德市市长
  • 怎么加快登录网站速度郑州seo服务公司
  • 自己可以建个免费网站吗在哪里查关键词排名
  • 网站地图深度做多少合适种子资源
  • 网站建设运维自查问题清单中山seo排名
  • 莱芜优化网络的软件
  • 网站乱码解决办法培训机构招生方案模板
  • 动态网站建设网站网站快速排名服务
  • 公务员报名网站怎么做大地seo视频
  • 哪里可以做网站推广厦门谷歌seo公司有哪些
  • 做网站空间重要还是程序重要今日头条官网
  • 怎么编程一个网站上海最新发布
  • 做内销网站网址大全网站
  • 小皮搭建本地网站抖音指数查询
  • 做网站要学什么软件好怎么建立网站?
  • 室内设计联盟网seo网站快速排名软件
  • 做的好的音乐网站的特点网站推广的常用方法
  • 工程分包网无锡seo网络推广
  • 怎么做网站投票选举餐饮营销策划与运营
  • 深圳网站开发哪家公司好福建seo优化
  • 网站做兼容处理怎么设置bt磁力
  • 最好网站建设windows优化大师要会员
  • 广州天河做网站下载班级优化大师并安装