关于Scope 'session' is not active for the current thread的问题

来源:互联网 发布:博途v13编程手册 编辑:程序博客网 时间:2024/05/17 07:50

最近在做毕业设计,已近完成,却发现重大bug。

【问题概述】:我做的是订餐系统,测试时发现不用A客户可以看到B客户购物车中的餐品。由于我以前做过的类似的系统是没有用spring整合的,购物车这里可以与session绑定解决这个问题,如今使用spring整合却忽略了这个问题(好久没写代码了),如下本文就该问题给出解决方案,方案均来自互联网并非本人自己想到的,遂记下学习之。

【解决方法】:

造成这个问题的原因是spring默认所有的bean都为单例模式(scope="singleton"),固A,B客户操作的其实是同一个购物车实例。想要解决这个问题就需要将生命周期设置为session,即将Scope设置为scope="session",表示为一个session只创建一个实例。

Scope设置为scope="session"需要在web.xml中做如下配置:

<!-- 开启Session机制 -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

此外还需要在spring配置文件中.相应的spring bean配置中加入<aop:scoped-proxy/>

<bean id="cartService" class="com.lvsl.bysj.service.impl.CartServiceImpl" scope="session">
<aop:scoped-proxy/>
<property name="cartDao" ref="cartDao"></property>
</bean>

0 0
原创粉丝点击