It would seem that HttpServletRequest
is a request scope bean, but I have not yet been able to find any documentation on this.
Does anyone know where this is documented or where in the code base it is created?
CodePudding user response:
The HttpServletRequest
is normally created and managed by servlet container (e.g. Tomcat) but not Spring. You normally do not need to define it as a spring bean unless you are doing something special. So technically from the spring 's point of view, the HttpServletRequest
does not have any scope as it is not a spring bean.
But even if you need to define a HttpServletRequest
bean for some reason, by default it will be in the singleton scope. (see the scope table in this).
The relationship between HttpServletRequest
and a request scope bean is that Spring will make sure whenever the servlet container process a new HttpServletRequest
, it will create a new request scope bean instance in case you need to access it during processing this HttpServletRequest
. And this request scope bean will be destroyed after the servlet container finish process that HttpServletRequest
. Such behaviour is also mentioned in the above link as :
Scopes a single bean definition to the lifecycle of a single HTTP request. That is, each HTTP request has its own instance of a bean created off the back of a single bean definition. Only valid in the context of a web-aware Spring ApplicationContext