2 回答
TA贡献1921条经验 获得超9个赞
事实上,最好在 @Service bean 中使用默认范围(单例)的动态变量。您的 REST 组件有一个请求范围。您还需要提供一个线程保存变量,例如使用 AtomicBoolean
@Service
class OrderUtil {
private static final AtomicBoolean dynamicValue = new AtomicBoolean();
public boolean isDynamicValue() {
return dynamicValue.get();
}
public void setDynamicValue(boolean v) {
dynamicValue.set(v);
}
//think about it https://en.wikipedia.org/wiki/Compare-and-swap
public boolean casDynamicValue(boolean expect, boolean update) {
return dynamicValue.compareAndSet(expect, update);
}
}
TA贡献1828条经验 获得超4个赞
这个问题是基于Bean作用域的,可以通过正确使用bean作用域来解决。
这里,每个 Rest 请求都带有一个 Request Scoped bean,并且该 bean 在给定请求中保持活动状态。
每个请求都会创建自己的线程,因此不会有任何您认为可能的差异,因为每个请求都会有一个动态值 true/false 值,该值在整个请求会话中都有效。
添加回答
举报