Estoy tratando de configurar un bean con ámbito de solicitud en Spring.
Lo configuré con éxito para que el bean se cree una vez por solicitud. Ahora, necesita acceder al objeto HttpServletRequest.
Dado que el bean se crea una vez por solicitud, me imagino que el contenedor puede inyectar fácilmente el objeto de solicitud en mi bean. Cómo puedo hacer eso ?

Spring expone el
HttpServletRequestobjeto actual (así como elHttpSessionobjeto actual ) a través de un objeto contenedor de tipoServletRequestAttributes. Este objeto contenedor está vinculado a ThreadLocal y se obtiene llamando alstaticmétodoRequestContextHolder.currentRequestAttributes().ServletRequestAttributesproporciona el métodogetRequest()para obtener la solicitud actual,getSession()para obtener la sesión actual y otros métodos para obtener los atributos almacenados en ambos ámbitos. El siguiente código, aunque un poco feo, debería llevarle el objeto de solicitud actual en cualquier lugar de la aplicación:Tenga en cuenta que el
RequestContextHolder.currentRequestAttributes()método devuelve una interfaz y es necesario convertirlo en elServletRequestAttributesque implementa la interfaz.Spring Javadoc: RequestContextHolder | ServletRequestAttributes
fuente
Como se sugiere aquí , también puede inyectar el parámetro
HttpServletRequestcomo método, por ejemplo:fuente