广告
返回顶部
首页 > 资讯 > 精选 >Java怎么使用ThreadLocal实现当前登录信息的存取功能
  • 322
分享到

Java怎么使用ThreadLocal实现当前登录信息的存取功能

2023-07-05 04:07:26 322人浏览 薄情痞子
摘要

本篇内容主要讲解“Java怎么使用ThreadLocal实现当前登录信息的存取功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么使用ThreadLocal实现当前登录信息的存取功能”

本篇内容主要讲解“Java怎么使用ThreadLocal实现当前登录信息的存取功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么使用ThreadLocal实现当前登录信息的存取功能”吧!

    使用ThreadLocal实现当前登录信息的存取

    项目中我们增加一个员工有一些信息是需要我们自己填入的,有一些信息不需要我们自己填写,例如:创建时间,创建人等,那么这些事件我们通常就是使用实体类然后set相关属性,但是我们可以使用MetaObjectHandler来将这些不要要我们自己穿的参数进行默认填充,但是创建人和更新人是获取的当前用户登录人。

    我们都知道想要获取当前的登录人就需要使用httpservletRequest来获取,但是我们字符串填充类没有这个,那么我们就可以使用ThreadLocal来实现当前登录信息的存取。

    ThreadLocal的实现原理就是,一个线程里面有局部变量,我们可以利用局部变量来存取数据,当然我们必须保证是同一个线程这样才能准确的存储和获取数据,在我们一个请求流程下来我们都使用的一个线程,所以这里我们就可以使用ThreadLocal来进行信息的存取。

    1,写一个工具类用于存取用户id

    Java怎么使用ThreadLocal实现当前登录信息的存取功能

    public class BaseContext {    private static ThreadLocal<Long> threadLocal = new ThreadLocal<>();    public static void setCurrentId(Long id){        threadLocal.set(id);    }    public static Long getCurrentId(){        return threadLocal.get();    }}

    2、在用户登录的时候我们在过滤器中可以获取用户的id,这个时候我们将用户id放入ThreadLocal中。

    Java怎么使用ThreadLocal实现当前登录信息的存取功能

      //4、判断登录状态,如果已登录,则直接放行        if(request.getSession().getAttribute("employee") != null){            log.info("用户已登录,用户id为:{}",request.getSession().getAttribute("employee"));            Long empId =  (Long) request.getSession().getAttribute("employee");            BaseContext.setCurrentId(empId);            filterChain.doFilter(request,response);            return;        }

    然后在需要用到用户id的地方进行读取:

    Java怎么使用ThreadLocal实现当前登录信息的存取功能

     @Override    public void insertFill(MetaObject metaObject) {        log.info("公共字段自动填充[insert]...");        log.info(metaObject.toString());        metaObject.setValue("createTime", LocalDateTime.now());        metaObject.setValue("updateTime",LocalDateTime.now());        metaObject.setValue("createUser",BaseContext.getCurrentId());        metaObject.setValue("updateUser",BaseContext.getCurrentId());    }

    在上面的方法写完成后,我们直接运行程序,然后新增和修改员工就会进入这些方法然后进行字段填充操作。

    到此,相信大家对“Java怎么使用ThreadLocal实现当前登录信息的存取功能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: Java怎么使用ThreadLocal实现当前登录信息的存取功能

    本文链接: https://www.lsjlt.com/news/349616.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作