首页 > 其他分享 >多线程环境中使用MyBatis时避免出现没有token的问题

多线程环境中使用MyBatis时避免出现没有token的问题

时间:2024-04-07 16:24:35浏览次数:26  
标签:RequestContextHolder ServletRequestAttributes setRequestAttributes token 线程 serv

// 很重要,在多线程没有token 下面三行可以解决 mybatis方法报错

// 1. 通过当前的 WebUtil.getRequest() 获取Servlet请求的属性
ServletRequestAttributes servletRequestAttributes = new ServletRequestAttributes(WebUtil.getRequest());

// 2. 将获取到的Servlet请求属性设置为当前线程的请求属性
RequestContextHolder.setRequestAttributes(servletRequestAttributes);

// 3. 再次获取当前线程的请求属性
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

// 4. 在一个新的线程中执行以下操作:
ThreadUtil.execute(() -> {
// 将上面获取到的请求属性再次设置为当前线程的请求属性
RequestContextHolder.setRequestAttributes(requestAttributes);
});

 

ServletRequestAttributes servletRequestAttributes = new ServletRequestAttributes(WebUtil.getRequest());
RequestContextHolder.setRequestAttributes(servletRequestAttributes);
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
ThreadUtil.execute(() -> {
        RequestContextHolder.setRequestAttributes(requestAttributes);
 
 
    ………业务代码………
 
 
}

 

标签:RequestContextHolder,ServletRequestAttributes,setRequestAttributes,token,线程,serv
From: https://www.cnblogs.com/javaquan/p/18119304

相关文章

  • mybatis动态sql
    1.if传值判断1.1不为空或null <iftest="cgxs!=nullandcgxs!=''">andcgxs=#{cgxs}</if>1.2传数字判断<iftest="cgxs=='1'">andcgxs=#{cgxs}</if>1.3传字符串判断1.3.1第一种<iftest="cgxs ......
  • mybatis - Jdbc、Hibernate、Mybatis的区别
      一、采用JDBC方式访问数据库 1.1、使用JDBC的5个步骤① 注册驱动和数据库信息②获得 Connection,并使用它打开Statement对象③通过Statement对象执行SQL语句,并获得结果对象 ResultSet④通过代码将ResultSet对象转化为 POJO对象⑤ 关闭数据库资源 1.2......
  • C++多线程:async、future、packaged_task、promise、shared_future的学习与使用(九)
    1、异步任务线程异步线程的概念:异步:就是非同步,同步就是必须一个一个的执行,异步可以两个事情一起干异步线程:异步线程就相当于把非关联的两件事分开找两个线程去执行,而分开的那个就是异步线程举例:例如登录信息,用户登录完毕主线程肯定是需要去及时响应用户的请求的,而系统设......
  • 【JAVA】JAVA多线程基础4
    目录一、synchronized关键字特性1、互斥2、刷新内存3、可重入二、synchronized使用方法1、直接修饰普通方法2、修饰静态方法3、修饰代码块三、volatile关键字一、synchronized关键字特性1、互斥synchronized会起到互斥效果,某个线程执行到某个对象的synchronized......
  • CancellationTokenSource Cancel IsCancellationRequested
    //xaml<Windowx:Class="WpfApp37.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • MyBatis plus 详解
    当使用MyBatisPlus进行开发时,首先需要添加相应的依赖到项目中。通常,在Maven项目中,可以在pom.xml文件中添加以下依赖:<dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-boot-starter</artifactId>  <version>latest_version</versi......
  • 鉴权、授权:token和session
    1、session服务器认证、授权、鉴权:cookie+session来做认证cookie是放在游览器中的session是保存在服务器的数据库中的session鉴权处理:self.session=request.session() 直接拿self.session发送请求就好了,无需收到添加cookie  2、token安全令牌机制token是服务器生成......
  • 【附源码】计算机毕业设计在线教育平台(java+springboot+mysql+mybatis+论文)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义在数字化时代背景下,传统教育模式正在逐渐向在线教育转型。一个高效的在线教育平台不仅可以突破时间和空间的限制,提供灵活多样的学习方式,还能够实现个性化教育资源......
  • SSM(Spring+SpringMVC+MyBatis)常用注解大全
    提示使用浏览器查找系统也快速查找,可避免漏看和疲劳Win:Ctrl+FMac:Command+F@Bean功能:用于在配置类中声明一个bean。用法:@ConfigurationpublicclassAppConfig{@BeanpublicMyServicemyService(){returnnewMyServiceImpl();}}@Com......
  • 多线程(33)ConcurrentHashMap
    ConcurrentHashMap是Java并发包中提供的一个线程安全的哈希表实现。与传统的同步容器相比,ConcurrentHashMap通过一种分段锁的机制实现了更高的并发度。本节将深入探讨其设计原理,结合源码进行分析,并通过代码示例来演示其使用方法。设计原理ConcurrentHashMap的设计理......