gpt4 book ai didi

java - 具有全局静态变量的原型(prototype) spring bean

转载 作者:行者123 更新时间:2023-12-01 09:55:36 25 4
gpt4 key购买 nike

我有一个问题,我有一个基于 spring-MVC 的项目。其中有一个类包含所有用户都可以访问的所有静态变量。所有 Bean 都是单例的,这在多个用户访问应用程序时会产生问题:最后一个用户在前一个用户执行其任务的同时修改静态变量。因此,在最后一个用户之后出现的是前一个用户的数据,该数据与最后一个用户的数据重叠,这会在报告中产生冲突。我也使用原型(prototype)bean,但由于静态变量,我没有找到任何解决方案。那么有人有与这个问题相关的解决方案吗?谢谢。

最佳答案

首先:使用db,并在那里保存数据。如果您重新启动程序,用户所做的所有更改都将被丢弃。

第二:你正确地标记了它,因为这是一个并发问题:创建同步块(synchronized block),保留版本,在进入同步块(synchronized block)时检查更改是否正在更改最新版本或以前的版本:如果您更改最新提交 - 好的,如果不是:处理异常。

第三:这设计有点糟糕。您确定需要所有用户修改一个参数吗?您是否保留修改者和修改方式的记录?单例主要用作在整个应用程序中共享信息的只读不可变对象(immutable对象)。

还有:请不要使用静态可变变量。说真的。

关于java - 具有全局静态变量的原型(prototype) spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com