我用google搜索但没有找到满意的答案,如果你们能解释ContextLoaderListener
和RequestContextListener
之间的区别,那就太好了。
答案 0 :(得分:14)
contextloaderlistener: - Bootstrap监听器启动Spring的根WebApplicationContext。只需委托ContextLoader。
requestcontextlistener :- 此侦听器主要用于第三方servlet,例如JSF FacesServlet。在Spring自己的Web支持中,DispatcherServlet的处理就足够了。
答案 1 :(得分:2)
如果您使用Servlet 2.5 Web容器,请求处理之外的请求 你需要Spring的DispatcherServlet(例如,当使用JSF或Struts时) 注册 org.springframework.web.context.request.RequestContextListener ServletRequestListener。对于Servlet 3.0+,可以通过以编程方式完成 WebApplicationInitializer接口。或者,或者对于旧容器,添加以下内容 声明到您的Web应用程序的web.xml文件:
<listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> </web-app>
答案 2 :(得分:1)
我已经读过如果您使用ContextLoaderListener,则不需要RequestContextListener或Filter。它将当前请求(属性)注册到本地线程中,以便作用域代理可以使用它。
答案 3 :(得分:0)
ContextLoaderListener是启动Spring的根WebApplicationContext的引导侦听器。
当您希望请求线程中的属性保持活动时,使用RequestContextListener。
这里需要注意的是,RequestContextListener中的inheritable标志设置为false。
因此,如果您希望子线程继承请求属性,那么您应该尝试使用RequestContextFilter或RequestContextHolder。