【发布时间】:2017-11-08 12:11:21
【问题描述】:
我有一个 Spring Web 应用程序,它有一个主控制器实例化一个对象,例如:
@Controller
public class testController {
private Boom boom = new Boom();
}
例如,此对象有一个 Get 方法来显示字符串数组列表供用户编辑和保存。
但是如果有 2 个会话打开,如果我在其中一个上编辑列表并保存,然后刷新它显示在那个会话上的第二个会话(第二个浏览器)。我不希望这种情况发生。 我希望控制器使该对象对于查看应用程序的每个用户都是唯一的
我有哪些选择范围?
【问题讨论】:
-
如果您想在不同用户的会话之间共享对象,请考虑将对象范围设置为
gloabal-session或singleton在此处阅读更多内容tutorialspoint.com/spring/spring_bean_scopes.htm -
您不能将 Boom 设置为请求或会话范围 bean 吗?或者只是动态创建它而不是尝试重用一个实例
-
@StanislavL 我已经阅读并使用了@Scope("session") 来确定控制器的范围,因为应用程序很小,所以我可以为每个会话使用一个新控制器。否则,确定 Boom 的范围也可以正常工作!谢谢
-
@Travisty ,
Controller必须是单例作为最佳实践,您应该将Boombean 范围设置为Session。 -
@Travisty,如果你喜欢我的回答,别忘了点赞并接受,谢谢。