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 值,該值在整個請求會話中都有效。
添加回答
舉報