HttpServletRequest request.setAttribute против ThreadLocal против RequestContextHolder

Мне нужно иметь конкретный объект запроса и использовать этот же объект в веб-приложении, чтобы получить/установить для него значения для выполнения бизнес-логики для конкретного запроса. Могу ли я использовать request.setAttribute/request.getAttribute или мне следует использовать ThreadLocal. Насколько я понимаю, каждый запрос обрабатывается отдельным потоком из пула потоков. У меня есть это в веб-приложении Spring. Я также вижу RequestContextHolder, не уверен, что подойдет


person Bukhtawar    schedule 13.01.2016    source источник
comment
возможный дубликат stackoverflow.com/ вопросы/10096483/   -  person Adam Burley    schedule 13.12.2016


Ответы (1)


Похоже, вы хотите, чтобы атрибут приложения был доступен для каждого конкретного запроса. Для этого вы можете использовать request.getServletContext().setAttribute() и request.getServeltContext().getAttribute(). ServletContext представляет приложение, поэтому установленные с ним атрибуты доступны в течение всего времени существования приложения и могут использоваться несколькими запросами.

person mmulholl    schedule 14.01.2016
comment
нужно запросить конкретный объект, а не широкое приложение - person Bukhtawar; 14.01.2016
comment
пожалуйста, уточните вопрос, как вы сказали .... и используйте тот же объект в веб-приложении для получения/установки значений...... . - person mmulholl; 14.01.2016
comment
Я имел в виду один объект для всего выполнения одного потока запроса (конкретный объект запроса) в разных веб-компонентах. - person Bukhtawar; 14.01.2016