@Autowired HttpServletRequest与传递参数-最佳实践
假设我们定义了一个@Controller
仅具有注释的控制器类。
在类内部,我们定义了private @Autowired HttpServletRequest request;
变量。
弹簧控制器是Singleton。当我们定义HttpServletRequest
为@Autowired
在Web应用程序,这将是一个问题?
我从一个网站上了解到,即使@Autowired
它只是为线程变量注入代理。
是真的吗 在多线程环境中,我们可以使用控制器类中的每个方法@Autowired
或将其HttpServletRequest
作为参数传递给正确的方法吗?
一些网站表示这是一个问题,建议将其作为参数传递,而很少有人说这将是一个问题。
我不知道哪一个是正确的。
回答:
都可以。
@Autowired HttpServletRequest
和作为参数传递是相同的事情。
在传递HttpServletRequest
给响应@RequestMapping
函数的调用方法之前,Spring会将其存储HttpServletRequest
到ThreadLocal
类型变量中。
该ThreadLocal
变量是线程安全的映射,保留HttpServletRequest
在当前线程上下文中。该@Autowired
HttpServletRequest代理bean会从正确的请求ThreadLocal
变量。
以上是 @Autowired HttpServletRequest与传递参数-最佳实践 的全部内容, 来源链接: utcz.com/qa/431590.html