Ответ 1
Если bean - это область запроса, вы можете авторизовать HttpServletRequest, как вы делаете.
@Component
@Scope("request")
public class Foo {
@Autowired private HttpServletRequest request;
//
}
В противном случае вы можете получить текущий запрос следующим образом:
ServletRequestAttributes sra = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest req = sra.getRequest();
Это использует thread-local под обложками.
Если вы используете Spring MVC, все, что вам нужно. Если вы не используете Spring MVC, вам необходимо зарегистрировать RequestContextListener или RequestContextFilter в web.xml
.