2013-09-10 3 views

ответ

13

contextloaderlistener: - Загрузочный слушатель для запуска корня Spring WebApplicationContext. Просто делегирует ContextLoader.

requestcontextlistener :- Этот слушатель в основном предназначен для использования со сторонними сервлетами, например. JSF FacesServlet. В рамках собственной веб-поддержки Spring обработка DispatcherServlet вполне достаточна.

+1

Можете ли вы объяснить, какой лучше использовать? и почему? –

1

Я читал, что если вы используете ContextLoaderListener, вам не нужен RequestContextListener или Filter. Он регистрирует текущий запрос (атрибуты) в потоке локальный, чтобы его можно было использовать прокси-сервера.

+1

На всякий случай - я не смог обработать бобы области запроса без добавления RequestContextListener с помощью подхода SpringApplicationInitializer инициализации Spring – XZen

0

ContextLoaderListener является загрузочным прослушивателем для запуска корневого каталога Spring WebApplicationContext.

RequestContextListener используется, когда вы хотите, чтобы атрибуты в потоке запроса оставались в живых.

Следует отметить, что наследуемый флаг установлен в false в RequestContextListener.

http://docs.spring.io/spring/docs/4.0.6.RELEASE/javadoc-api/org/springframework/web/context/request/RequestContextListener.html

Так что если вы хотите, чтобы ребенок нить наследует атрибуты запроса, то вы должны попробовать использовать RequestContextFilter или RequestContextHolder.

http://docs.spring.io/spring/docs/4.0.6.RELEASE/javadoc-api/org/springframework/web/filter/RequestContextFilter.html

1

При использовании Servlet 2.5 веб-контейнер, с запросов, обработанных за пределами Spring, DispatcherServlet (например, при использовании JSF или Struts), необходимо зарегистрировать org.springframework.web. context.request.RequestContextListener ServletRequestListener. Для Servlet 3.0+ это можно сделать программно через интерфейс WebApplicationInitializer . В качестве альтернативы, или для более старых контейнеров, добавьте следующую декларацию в файл web.xml вашего веб-приложения:

<listener> 
     <listener-class> 
      org.springframework.web.context.request.RequestContextListener 
     </listener-class> 
    </listener> 

</web-app> 
Смежные вопросы