Session Scoped Bean Spring具有相同实例的多个用户

时间:2015-08-20 15:04:18

标签: java spring-mvc autowired session-scope

我正在使用spring mvc 3.2.3开发一个Web应用程序。

我在dispatcher-servlet.xml中描述了一个会话范围的bean:

<bean id="domainCountBean" class="com.count.beans.CountSelectionBean" scope="session">
    <aop:scoped-proxy/>
</bean>

然后我想从控制器中使用它:

@Controller
@RequestMapping("/")
public class DomainController {
    @Autowired
    CountSelectionBean domainCountBean;  

.....

    @RequestMapping(value = "/manual_domain/ajaxSet/", method = RequestMethod.GET)
    public ResponseEntity<String> ajaxSetResetApprovalId(
            HttpServletRequest req, HttpServletResponse res
            ) {



        domainCountBean.getDeselectedIds().put(idStr, appId);



        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.add("Content-Type", "text/html; charset=utf-8");
        return new ResponseEntity<String>(jsonString, responseHeaders, HttpStatus.CREATED);

    }

当我从浏览器-A:登录我的webapp并使用domainCountBean时,似乎正确地存储在会话中。

同时,如果我尝试使用浏览器-B中的不同用户登录并使用domainCountBean,那么我将从浏览器-A中获取用户插入的值。反之亦然。

我正在努力为所提到的bean保留两个不同的实例。 我想如果我的概念错了,或者可以解决我的问题。

P.S:我不能在这里使用sessionAttribute。

1 个答案:

答案 0 :(得分:0)

通过分配&#34; session&#34;解决了这个问题。范围到控制器。

future.onSuccess(new OnSuccess<Object>() {
    @Override
    public void onSuccess(Object result) throws Throwable {
        // handle successful value return
    }
}, context().dispatcher());

虽然根据定义,我认为它应该没有控制器的会话范围。