SpringMVC使用ThreadLocal注意点!

实际上应该讲线程池遇上ThreadLocal

很多时候我们会想到利用ThreadLocal存储我们整个请求用到的变量-"上下文"

ThreadLocal利用线程作为key,自己为value

在线程池中线程是重复利用的,如果你不在请求执行完毕后清除它,危险可想而知!

例如:(不知道大家怎么称呼这个bug,我自己取了个名字“数据串门)

1、更改自己的资料时发现更改到了别人的资料

2、未登录也可以操纵一下需要权限的操作

3、无缘无故登录到了别人的账号(串号?)

 

 

SpringMVC也是使用线程池来进行业务处理,所以我们需要在使用完时清理掉ThreadLocal

清理办法:

1、可以使用拦截器覆盖postHandle(响应时处理)调用ThreadLocal.remove

 

 

 

你可能感兴趣的:(编程)