@Autowired HttpServletRequest与传递参数-最佳实践

假设我们定义了一个@Controller仅具有注释的控制器类。

在类内部,我们定义了private @Autowired HttpServletRequest request;变量。

弹簧控制器是Singleton。当我们定义HttpServletRequest@Autowired在Web应用程序,这将是一个问题?

我从一个网站上了解到,即使@Autowired它只是为线程变量注入代理。

是真的吗 在多线程环境中,我们可以使用控制器类中的每个方法@Autowired或将其HttpServletRequest作为参数传递给正确的方法吗?

一些网站表示这是一个问题,建议将其作为参数传递,而很少有人说这将是一个问题。

我不知道哪一个是正确的。

回答:

都可以。

@Autowired HttpServletRequest和作为参数传递是相同的事情。

在传递HttpServletRequest给响应@RequestMapping函数的调用方法之前,Spring会将其存储HttpServletRequestThreadLocal类型变量中。

ThreadLocal变量是线程安全的映射,保留HttpServletRequest在当前线程上下文中。该@Autowired

HttpServletRequest代理bean会从正确的请求ThreadLocal变量。

以上是 @Autowired HttpServletRequest与传递参数-最佳实践 的全部内容, 来源链接: utcz.com/qa/431590.html

回到顶部