2013-03-01 44 views
2

我正在使用spring事務,我的一個服務類方法需要像下面那樣同步。春季代理調用也同步如果目標類方法是同步的?

package com.xyz.service; 
class XYZService{ 
    public synchronized void methodA{ 
    } 

    public synchronized void methodB{ 
    } 
} 

和我申請春季txns我的服務類,如下面

<aop:config> 
     <aop:advisor id="serviceTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..)) order="0"/> 
    </aop:config> 

<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
     <tx:attributes> 
      <tx:method name="*"/> 
     </tx:attributes> 
    </tx:advice> 

<bean id="xyzManager" class="com.xyz.service.XYZService"> 
      </bean> 

所以,當我呼籲的Spring bean或了methodA的methodB(xyzManager),它仍然是一個同步的電話嗎?請幫助我..

回答

2

快速回答是「是」。 Spring創建「容器」,不觸摸方法的原始簽名。

+0

那我的疑問是代理應用後的方法也同步..? 讓我們假設'methodA'被代理併成爲'proxy @ metodA',那麼'proxy @ metodA'也是同步的,因爲mehtodA是同步的.... – pavan 2013-03-01 15:01:19