2013-03-01 4 views
2

Я использую весенние транзакции, и один из моих методов классов обслуживания должен быть синхронизирован, как показано ниже.- вызовы Spring proxy также синхронизируются, если методы целевого класса синхронизированы?

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> 

Так что, когда я называю Methoda или methodB на весеннем бобе (xyzManager), это еще синхронизированный вызов? Пожалуйста, помогите мне ..

ответ

2

Быстрый ответ: «Да». Spring создает «контейнер» и не касается оригинальной подписи метода.

+0

, тогда мое сомнение - это метод после применения прокси и синхронизированный ..? предположим, что 'methodA' проксирован и стал' proxy @ metodA', тогда 'proxy @ metodA' также синхронизируется из-за того, что mehtodA синхронизируется .... – pavan

Смежные вопросы