似乎HttpServletRequest
是一个请求作用域bean,但我还没有找到关于此的任何文档。
有人知道这是在哪里记录或在代码库中创建的吗?
HttpServletRequest
通常由servlet容器(例如Tomcat)创建和管理,而不是Spring。通常不需要将其定义为spring bean,除非您正在做一些特殊的事情。所以技术上从弹簧的角度来看,HttpServletRequest
没有任何作用域,因为它不是弹簧bean。
但是,即使出于某种原因需要定义HttpServletRequest
bean,默认情况下它也将位于单例作用域中。(参见此处的作用域表)
HttpServletRequest
和请求范围bean之间的关系是,春天将确保每当新HttpServletRequest
servlet容器过程,它将创建一个新的请求范围bean实例,以防你需要处理这个HttpServletRequest
期间访问它。并且这个请求范围bean将在servlet容器完成HttpServletRequest
处理后被销毁。这种行为在上面的链接中也提到了:
将单个bean定义作用于单个HTTP请求的生命周期。也就是说,每个HTTP请求都有自己的bean实例,该实例是在单个bean定义的后面创建的。只在支持web的Spring ApplicationContext上下文中有效