java如何在一次请求的不同业务方法中共享数据
2021/5/22 14:25:32
本文主要是介绍java如何在一次请求的不同业务方法中共享数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java后端web服务,对于某次前端请求,可能需要执行多个不同的业务方法才能处理完成。
这些不同的方法在做业务处理时可能需要多次操作某一数据,我们常规的做法是把该数据通过参数传递给方法,或者在方法需要该数据时从数据库获取。
前者迫使我们改变方法签名,后者加重数据库负担,因此都不是理想的做法。
实际上,我们可以在Controller或者Service类中定义一个ThreadLocal<T>变量,在首次拿到数据后,通过set方法将数据保存到变量中,在这之后被调用的方法中就可以用get方法得到这份数据。ThreadLocal<T>变量是线程内共享的,不同的线程之间不会相互影响,线程执行完以后数据会自动释放。
ps:
最近在一个springmvc项目中使用ThreadLocal时,遇到了数据错乱问题,偶现,大致情况如下。
我的代码执行顺序是先在A处set值,然后在B处get值,最后没有clear数据。
某次业务请求过来,执行到B处,get到了之前某次业务请求set进来的值,最终导致业务处理错乱。
具体原因还不确定,可能跟spring线程复用有关,难道线程复用导致ThreadLocal数据不能自动释放?
暂时在业务处理结束时加了clear处理,希望有老师给与指点,谢谢。
这篇关于java如何在一次请求的不同业务方法中共享数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用