解决:并发 获取token值被覆盖,防止重复获取token

在调用接口是 接口里是有token的
但是 如果一个页面 有好几个接口需要调用 token的话 toke值就被覆盖,可能最后请求一个或者两个接口是正常返回数据, 其他接口就会报错,这是应为 你调用接口会验证最新获取的token 所以其他的就会报错,解决
其实有很多办法 比如 存放到redis 或者数据库里 但是token有过期时间 token会失效 所以需要更新,这样的其实比较 费事的,
解决:
其实一个定时任务就可以解决
首先写个静态方法 获取 token 加上定时器让他2分钟或者1分钟执行一次 ,这样也不用担心token会失效了,因为我每个2分钟就更新一次 每次更新都是新的token 在定义一个全局变量,获取静态得到token 之后 需要用到token的地方就直接 放进去就行了

    public static String token=null;

  @Scheduled(fixedDelay = DataConstants.LLL)
    public static  String Authorization ()throws JSONException {
       String authorization =HttpClient.getToken();
        token=authorization;
       return authorization;
    }

调用示例

 @RequestMapping("xxxxxx")
    @ResponseBody
    public ActionResult getPaperAchievements(String name, String orgName, Integer pageNo, Integer pageSize) throws JSONException {
        MultiValueMap<String, String> params1 = new LinkedMultiValueMap<>();
        String url = ExpertUtil.EXPERT + orgName + "/" + name + ExpertUtil.EXPERTPAPER + "?" + pageNo + "&" + pageSize;
        HttpHeaders headers = new HttpHeaders();
        //设置请求头放进token
        headers.add("Authorization",token);
        System.out.println(token+"------"+1+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
        headers.add("AppKey", JournalismUtil.JOURNALISMTOKENAPPKEY);
        String paper =null;
        try {
            paper = HttpClient.sendGETRequest(url, params1, headers);
        } catch (Exception e) {
            return ActionResult.success(null);
        }
        return ActionResult.success(paper);
    }

然后打印的 token值是一致的 没有出现值不一致的情况
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

  T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值