我在理解 spring rest 如何识别新会话时遇到了问题。假设我们有如下定义的简单会话 bean:
@SessionScope
public class Counter {
private int counter;
public int inc() {
return counter++;
}
}
我们还有一个简单的 rest 控制器,它提供了调用 Counter 的 inc()
方法并返回其当前值的 get 方法。
我期望每个请求(在邮递员中提出)都会导致获得值 1,因为无法识别会话。例如,没有像传统的基于 servlet 的应用程序那样的 JSESSION_ID cookie。我实际得到的是计数器的增加值,如果我在邮递员、网络浏览器或 curl 中提出请求,这并不重要。即使在私有模式下使用浏览器仍然指的是同一个 bean 实例。
问题是 spring 如何识别新会话以及我如何在“测试”环境中模拟不同的会话。
答案 0 :(得分:0)
找到答案 - bean 缺少 @Component
注释。使用该 JSESSION_ID cookie 创建,显然这是 spring 识别会话的方式。