最近看了“代码分享”中的2篇代码:
“OSChina 中一个非常重要的类——RequestContext” (这里)和
“OSChina 的全局过滤器源码” (这里)
感觉非常的好,特别是 RequestContext 类的设计,但同时也有一些不明白的地方,在这里提出来,向大家请教:
在ControllerFilter中初始化了 RequestContext ,即:每访问一个URL,RequestContext就会被初始化一次,而在RequestContext中,将其对象保存在 ThreadLocal中,我不明白为什么要这么做:
1. 为什么要使用Filter每过滤一个URL就初始化一次RequestContext?为什么不是只初始化一次呢?
2. 将RequestContext保存在 ThreadLocal中的用意是什么?使用ThreadLocal有很么好处吗?
我很想弄清楚这个设计思想,呵呵
RequestContext 从字面上的意思是请求上下文,也就是说是跟着当前请求走的。
不同的请求应该有不同的上下文,包括参数啊、Session、用户等等
因此 RequestContext 必须是每访问一个URL就会初始化一个新的实例
第二:
保存在 ThreadLocal 的目的是为了不需要在各个层(Controller\DAO)之间传递 RequestContext 实例。
关于线程本地的一些代码请看这里。
谢谢红薯大哥,明白了,呵呵!
######现在spring的bean默认都是单例的了,红薯可以考虑一下这要弄哦
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。