ContextLoaderListener
我用谷歌搜索了它,但没有找到满意的答案,如果你们能解释一下和之间的区别,那就太好了RequestContextListener
。
4 回答
contextloaderlistener :-引导侦听器以启动 Spring 的根 WebApplicationContext。只需委托给 ContextLoader。
requestcontextlistener :-这个监听器主要用于第三方 servlet,例如 JSF FacesServlet。在 Spring 自己的 web 支持中,DispatcherServlet 的处理是完全足够的。
如果您使用 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>
我已经读过,如果您使用 ContextLoaderListener,则不需要 RequestContextListener 或 Filter。它在本地线程中注册当前请求(属性),以便作用域代理可以使用它。
ContextLoaderListener 是启动 Spring 的根 WebApplicationContext 的引导侦听器。
当您希望请求线程中的属性保持活动状态时,使用 RequestContextListener。
这里需要注意的一点是,RequestContextListener中的inheritable flag设置为false。
因此,如果您希望子线程继承请求属性,那么您应该尝试使用 RequestContextFilter 或 RequestContextHolder。