我正在编写Spring服务,并希望包括控制器可以使用的某种形式的RequestContext,这些控制器可以存储诸如经过身份验证的用户和请求id之类的内容。然而,我看到了多种方法:
使用ServletRequest.setAttribute
RequestContextHolder
@RequestScope bean这些方法之间的权衡是什么?
发布于 2021-01-13 18:14:24
广义地说,RequestScope是春天的神奇之道。它在内部使用RequestContextHolder,而后者又依赖于ServletRequest.setAttribute。换句话说,春天的方式,是IMHO的RequestScope。如果您喜欢限制Spring注释的魔力,那么RequestContextHolder是有意义的。最后,ServletRequest.setAttribute仍然是较低的级别,如果您希望代码与非Spring应用程序兼容,则应该主要使用它。
此外,对于前两种方法,Spring使用一个线程作用域对象来存储对请求上下文的引用,这允许程序员访问bean,即使在没有明确接收请求对象的方法中也是如此。
https://stackoverflow.com/questions/65707326
复制相似问题