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

济南网站建设铭盛信息网页制作模板简易

济南网站建设铭盛信息,网页制作模板简易,网站 制作 报价,银川网站设计建设本功能是在切面执行链基础上实现的功能#xff0c;如果不知道切面执行链的同学#xff0c;请看一下我之前专门介绍切面执行链的文章。 在SpringBoot项目中实现切面执行链功能-CSDN博客 1.定义防重复提交handler /*** 重复提交handler**/ AspectHandlerOrder public class …本功能是在切面执行链基础上实现的功能如果不知道切面执行链的同学请看一下我之前专门介绍切面执行链的文章。 在SpringBoot项目中实现切面执行链功能-CSDN博客 1.定义防重复提交handler /*** 重复提交handler**/ AspectHandlerOrder public class ResubmitAspectHandler implements AspectHandler {private StringRedisTemplate stringRedisTemplate;public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate stringRedisTemplate;}Overridepublic boolean execute(ProceedingJoinPoint pjp) throws Exception {Method method getMethod(pjp);if (!method.isAnnotationPresent(Resubmit.class)) {return true;}Resubmit annotation method.getAnnotation(Resubmit.class);long ttl annotation.ttl();String key getKey();String value 1;if (lock(key, value, ttl)) {return true;} throw new BaseRuntimeException(ExceptionEnums.ERROR_10012.getCode(), 操作频率过高请稍后再试);}Overridepublic void afterCompletion(ProceedingJoinPoint pjp, Object response, Exception exception) {Method method getMethod(pjp);if (method.isAnnotationPresent(Resubmit.class)) {unlock(getKey());}}/*** redis原子操作如果key不存在就设置key:value** param key* param value* return true设置成功拿到锁false设置失败未拿到锁*/private boolean lock(final String key, final String value, final long ttl) {Boolean result stringRedisTemplate.boundValueOps(key).setIfAbsent(value, Duration.ofSeconds(ttl));return result ! null ? result : false;}/*** 解锁删除key** param key*/private void unlock(String key) {if (StringUtils.isNotBlank(key)) {stringRedisTemplate.delete(key);}}/*** 获取方法** param pjp* return*/private Method getMethod(ProceedingJoinPoint pjp) {MethodSignature signature (MethodSignature) pjp.getSignature();Method method signature.getMethod();return method;}/*** 获取key** return*/private String getKey() {ServletRequestAttributes requestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request requestAttributes.getRequest();String url request.getRequestURI();String httpMethod request.getMethod();HttpHeader httpHeader WebContext.getHttpHeader();String deviceId httpHeader.getDevice_id();String key RedisConstants.REDIS_RESUBMIT_KEY httpMethod url : deviceId;return key;} } 2.定义防重复提交注解 /*** 防止重复提交*/ Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface Resubmit {/*** 存活时间秒当意外情况例如锁定之后重启服务* 未能执行解锁功能redis将在${ttl}秒之后自动删除锁标志* 默认 10秒* return*/long ttl() default 10;} 3.在配置类中注入防重复提交切面类 Bean public ListAspectHandler apiAspectHandlers() {ResubmitAspectHandler resubmitAspectHandler new ResubmitAspectHandler();resubmitAspectHandler.setStringRedisTemplate(stringRedisTemplate);return Arrays.asList(resubmitAspectHandler); } 4.controller中应用防重复提交注解 PostMapping(/release) Resubmit public ApiResponse? insert(RequestBody Valid InsertAppRequestDTO req) {// 处理业务逻辑 }
http://www.zqtcl.cn/news/843857/

相关文章:

  • 建设银行企业版网站做微网站平台
  • 北京企业网站建设电话长沙建设工程信息网
  • 大型综合门户网站开发扁平化个人网站
  • 怎么做代理人金沙网站长沙 网站运营
  • 商城网站开发的目的和意义鲜花类网站建设策划书范文
  • 什么类型的公司需要做建设网站的iis7 网站权限设置
  • 信誉好的商城网站建设火车头 wordpress 发布
  • 龙岩做网站抚顺 网站建设
  • wordpress怎么设置广告位青州网站优化
  • 网站的备案编号高端网站建设谷美
  • 佛山智能网站建设地址设计资溪做面包招聘的网站
  • 荆州网站建设多少钱国外网站设计理念
  • 网站备案成功后wordpress文字加框
  • 中小企业怎么优化网站西安网站建设求职简历
  • 网站开发者模式怎么打开商城网站建设特点有哪些
  • 网站登录按纽是灰色的做网站的前途怎么样
  • 常州城乡建设局网站霸榜seo
  • 网站响应样式如何制作自己的公众号
  • 网站的友情连接怎么做免费收录链接网
  • 太原网站设计排名wordpress 设置语言
  • 南京模板建站定制网站网站单页面怎么做的
  • 宁夏住房建设厅网站石家庄最新今天消息
  • 写网站软件tomcat部署wordpress
  • 怎么做下载网站吗分析一个网站
  • 网站建设禁止谷歌收录的办法做挂网站
  • 佛山优化网站公司做购物网站需要多少钱
  • 山东网站建设维护营销型网站是什么样的
  • 长沙营销网站建设苏州风险区域最新
  • 个人网站百度推广收费wordpress发邮件慢
  • 三门峡网站设计wordpress 去掉功能