Lea*_*ner 10 spring spring-mvc
假设我们定义了一个@Controller仅具有注释的控制器类。
在类内部,我们定义了private @Autowired HttpServletRequest request;变量。
弹簧控制器是Singleton。当我们定义HttpServletRequest为@Autowired在Web应用程序,这将是一个问题?
我从一个网站上了解到,即使@Autowired它只是为线程变量注入代理。
是真的吗 在多线程环境中,我们可以使用控制器类中的每个方法@Autowired或将其HttpServletRequest作为参数传递给正确的方法吗?
一些网站表示这是一个问题,建议将其作为参数传递,而很少有人说这将是一个问题。
我不知道哪一个是正确的。
小智 15
都可以。
@Autowired HttpServletRequest和作为参数传递是相同的事情。
在传递HttpServletRequest给响应@RequestMapping函数的调用方法之前,Spring会将其存储HttpServletRequest到ThreadLocal类型变量中。
该ThreadLocal变量是线程安全的映射,保留HttpServletRequest在当前线程上下文中。该@Autowired HttpServletRequest代理bean会从正确的请求ThreadLocal变量。
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |