當開發人員將可變性引入Spring組件時,我們遇到了多線程問題。這樣的事情:確保彈簧組件是無狀態的
@Component //singleton
public class MyComponent {
...
private String intermediateResults;
public String businessMethod() {
... fills in intermediateResults;
}
public String thisGetterShouldNotBeHere() {
return intermediateResults;
}
}
這導致與多線程錯誤 - 字段intermediateResults已被訪問從不同的線程。
是否有一種方法可以防止向Spring Singleton添加狀態,例如通過某種靜態分析儀? SonarQube插件? Eclipse插件? 感謝您的建議。
http://stackoverflow.com/questions/777849/proper-usage-of-synchronized-singleton – joc
只是一個問題:是不是'businessMethod()'使類可變,而不是Getter? –
肯定businessMethod使它變化。 – leokom