关于Oschina架构中ActionServlet一个ThreadLocal问题

mrvoce 发布于 2012/02/16 14:34
阅读 405
收藏 0

ThreadLocal<Boolean> jsonEnable = new ThreadLocal<Boolean>();

为什么在ActionServlet定义一个ThreadLocal这么一个变量呢?Servlet是单例多线程情况,这么写实为了保证请求方法是否是json输出么?但这么做的意义是什么呢?为什么不把Boolean

变成Object存放的是从Map里面获取的对应Action的实例?一直不清楚ThreadLocal放在这里的用途,去baidu上看了ThreadLocal的用途,然是一直无法拿捏他的适用情况,请@红薯大哥谈谈,用过的也请发表下回复!谢谢了。

加载中
0
红薯
红薯
为了让这个变量在整个request的处理过程中都可以方便获取,而不需要 request 本身对象
mrvoce
mrvoce
但是仅仅只是对Json的支持与否,取json是否支持是从Map里面的Action实例的方法的注解上面获取的,跟Request好像没关系哦。还望解释下。
0
mrvoce
mrvoce

引用来自“红薯”的答案

为了让这个变量在整个request的处理过程中都可以方便获取,而不需要 request 本身对象

或许我些许明白了一点用他的意义,第一次请求过来后放到该变量中,在整个request处理过程中不用总是冲map获取action实例然后从方法上面获取注解判断,而仅仅是绑定到ThreadsLocal这个变量里面了,因为在handleException也用到了。但我还是不明白用这个到底出于什么情况考虑的,能做个假设么,红薯大哥?

返回顶部
顶部