1
考慮一個定義操作opA(class opA)的spring管理web服務。將針對該操作的每個請求創建一個opA對象的單獨實例。在webservice中使用Spring管理bean的競爭條件
Class opA{
@Autowired
B objB;
}
Class B{
C objC;
.
.
}
Class C{
.
.
.
}
<bean id="objB" class="blah.blah.B">
<property name="objC">
<bean class="blah.blah.C"/>
</property>
</bean>
注:OPA也由彈簧
這裏objB是彈簧單範圍具有內部豆objC的對象所管理。現在,如果兩個opA請求同時到達,它們都將具有相同的objB實例嗎?導致objB中objC的狀態可能出現競爭狀態。我對麼?如果不是,你可以解釋爲什麼?
objB一個簡單的Dao和objC是一個像「地圖」的容器,它將保存由Doa收集的值 – broun
然後是的,沒有同步廣告取決於您的實現,您可以讓不同的線程彼此步進。正如@ Clockwork-Muse所提到的那樣,Spring是無關緊要的,但更多的是關於無狀態與有狀態。作爲一般規則,您應該嘗試使對象成爲無狀態/不可變的,因爲它們是線程安全的。 –