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

苏州高端网站建设定制如何制作小程序

苏州高端网站建设定制,如何制作小程序,wordpress 火车采集,专业网站制作的地方Async和SpringSecurityContext 场景回溯 在执行一个用时较长的批量插入业务的时候,我尝试使用Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现 此处我是基于SpringSecurity来获取用户的 是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是…

Async和SpringSecurityContext

场景回溯

在执行一个用时较长的批量插入业务的时候,我尝试使用@Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现

image-20230531185851242

此处我是基于SpringSecurity来获取用户的

image-20230531190558107

是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是处于登陆状态的

然后,我删除了业务方法上的@Async注解,这个方法执行了20s但是没有出现报错

由此可以确定是异步导致的错误

错误原因

SecurityContextHolder的底层默认是基于ThreadLocal的,

image-20230531190351672

image-20230531190405072

基于ThreadLocal就会导致异步执行的子线程拿不到主线程的ThreadLocal,从而导致SecurityContext中没有用户信息;

解决方式

既然子线程没有拿到父线程的ThreadLocal那就让他拿到不就好了,那我们该如何拿到呢?

InheritableThreadLocal是Java中的一个类,它提供了类似于ThreadLocal的功能,但具有额外的特性。它允许在ThreadLocal中存储的值在创建子线程时被子线程继承。

那我们如何让SecurityContext底层使用InheritableThreadLocal呢?

SpringSecurity贴心的为我们设计了基于InheritableThreadLocal的SecurityContext策略

并且在SecurityContextHolder中已经给出了对应的配置项

image-20230531191642594

我们只需要进行相应的配置即可

    public static void main(String[] args) {SpringApplication.run(LabourServiceApplication.class,args);//配置基于InheritableThreadLocal的SecurityContextSecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);}
http://www.tj-hxxt.cn/news/20385.html

相关文章:

  • 什么网站可以学习建设工程法律实践如何在百度上做免费推广
  • 自己做挖矿网站整站优化提升排名
  • 网页制作软件html网络推广优化品牌公司
  • 做拼团网站比百度好用的搜索引擎
  • 济南公司网站建设互联网优化是什么意思
  • 如何汇报网站建设b2b平台都有哪些网站
  • 做微信大转盘有哪些网站新网站怎么做优化
  • 大企业网站建设江苏网络推广公司
  • 常州 招网站开发线上销售渠道有哪些
  • 网站开发 文件上传慢seo全网推广
  • 如何进行网站的资源建设销售外包公司
  • 怎样做网站 网页营销策划方案怎么做
  • 做网站引流的最佳方法品牌全案营销策划
  • 做网站卖资料谁能给我个网址
  • 长春网站网站建设seo新手快速入门
  • 千库网免费背景素材关键词优化排名的步骤
  • 机械毕业论文代做网站企业网站推广有哪些方式
  • 闽侯县住房和城乡建设网站比较好的网络优化公司
  • 做1元夺宝网站挣钱吗百度小说排行榜前十
  • 西安做网站报价深圳百度关键词排名
  • 做网站外包大学生怎么在百度上添加自己的店铺地址
  • 做网站用虚拟主机好吗请简述网络营销的特点
  • 公司做网站推广东莞百度seo哪里强
  • 政府网站建设情况谷歌浏览器免费入口
  • 做网站设计制作的公司网站制作软件
  • 旅游网站建设主要工作网络营销案例分析论文
  • 东莞附近公司做网站建设多少钱linux网站入口
  • 百度网址大全官方网站浙江网站建设制作
  • 郑州网站建设扌汉狮网络百度关键词热度
  • 给帅哥做奴视频网站地址魔贝课凡seo