2013-01-11 80 views
3

我想知道是否Spring請求是同步的。這是我的場景:是一個春季請求同步

我有一個請求映射到一個Controller1,它自己調用DAO1.aMethod()。 可以說,另一個用戶調用相同的方法,另一個請求被Controller1映射到DAO1.aMethod()之前,第一次調用DAO1.aMethod()返回一個值。

我問這個,因爲我有一個DAO運行一個複雜的算法與計算,我很好奇,如果另一個用戶的另一個電話會干擾計算,如果他開始另一個。

從我身邊的測試表明,如果我的DAO中保留一個字段說'iRunsCalculation'並跟蹤實際狀態,則第二個請求可以讀取請求1設置的狀態。

回答

0

我假設通過「同步」,你的意思是,他們是同時運行還是排隊。它們當然可以同時運行,這就是Web容器通常如何工作的原因。 Spring與這裏發生的事情沒有多大關係,因爲它將是您的servlet容器,它將傳入的請求放入並將它們放到Spring DispatcherServlet

如果您的計算以某種方式取決於當前和過去對此服務的調用,那麼如果您沒有正確保護您的同步,很可能會遇到一些「同步」問題。

+0

剛剛與另一位同事討論過,現在我有點不好意思問這樣一個問題;)。週末電話我假設... – JoeDred