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

最近在做毕业设计,已近完成,却发现重大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>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值