多语言展示
当前在线:582今日阅读:86今日分享:14

spring请求,会话,应用程序和WebSocket初始化

spring请求,会话,应用程序和WebSocket范围
工具/原料
1

spring

2

IntelliJ IDEA

方法/步骤
1

在 request , session , application ,和 websocket 范围只有当你使用一个基于web的Spring可ApplicationContext 实现(例如 XmlWebApplicationContext )。如果将这些范围与常规的SpringIoC容器一起使用,例如 ClassPathXmlApplicationContext , IllegalStateException 则会引发知Bean范围的异常。

2

为了支持bean的范围界定在 request , session , application ,和 websocket (即具有web作用域bean),需要做少量的初始配置定义你的豆之前。(标准范围不需要此初始设置: singleton 和prototype 。)

3

如何完成此初始设置取决于您的特定Servlet环境。

4

如果您在Spring Web MVC中访问scoped bean,实际上是在Spring处理的请求中,则DispatcherServlet 无需进行特殊设置。 DispatcherServlet 已暴露所有相关国家。

5

如果您使用Servlet 2.5 Web容器,并且在Spring之外处理请求 DispatcherServlet (例如,使用JSF或Struts时),则需要注册org.springframework.web.context.request.RequestContextListenerServletRequestListener 。对于Servlet 3.0+,可以使用该 WebApplicationInitializer 接口以编程方式完成。

6

或者对于旧容器,将以下声明添加到Web应用程序的 web.xml 文件中:

7

或者,如果您的侦听器设置存在问题,请考虑使用Spring RequestContextFilter 。过滤器映射取决于周围的Web应用程序配置,因此您必须根据需要进行更改。以下清单显示了Web应用程序的过滤器部分:

8

DispatcherServlet , RequestContextListener 和 RequestContextFilter 所有做同样的事情,即将HTTP请求对象绑定到 Thread 为该请求提供服务的对象。这使得请求和会话范围的bean可以在调用链中进一步使用。

推荐信息