开发者社区> 问答> 正文

关于OSChina的OSChinaFilter和RequestContext配置使用问题 :报错

最近看了“代码分享”中的2篇代码:

OSChina 中一个非常重要的类——RequestContext” (这里)和

OSChina 的全局过滤器源码” (这里)

感觉非常的好,特别是 RequestContext 类的设计,但同时也有一些不明白的地方,在这里提出来,向大家请教:

在ControllerFilter中初始化了 RequestContext ,即:每访问一个URL,RequestContext就会被初始化一次,而在RequestContext中,将其对象保存在 ThreadLocal中,我不明白为什么要这么做:
1. 为什么要使用Filter每过滤一个URL就初始化一次RequestContext?为什么不是只初始化一次呢?
2. 将RequestContext保存在 ThreadLocal中的用意是什么?使用ThreadLocal有很么好处吗?

我很想弄清楚这个设计思想,呵呵

展开
收起
kun坤 2020-06-07 10:40:12 826 0
1 条回答
写回答
取消 提交回答
  • RequestContext 从字面上的意思是请求上下文,也就是说是跟着当前请求走的。

    不同的请求应该有不同的上下文,包括参数啊、Session、用户等等

    因此 RequestContext 必须是每访问一个URL就会初始化一个新的实例

    第二:

    保存在 ThreadLocal 的目的是为了不需要在各个层(Controller\DAO)之间传递 RequestContext 实例。

    关于线程本地的一些代码请看这里

    ######

    谢谢红薯大哥,明白了,呵呵!

    ######

    现在spring的bean默认都是单例的了,红薯可以考虑一下这要弄哦

    2020-06-07 10:40:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云Elasticsearch2.0发布 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载