Nie mogłem znaleźć na ten temat ostatecznej odpowiedzi w dokumentach i chociaż wydaje się, że istnieje logiczna odpowiedź, nie można być pewnym. Scenariusz jest taki - masz definicję transakcji opartą na xml, taką jak:Najważniejsze definicje transakcji oparte na adnotacjach i xml
<tx:advice id="txAdvice" transaction-manager="jpaTransactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
Która zaleca wszystkie metody obsługi. Ale wtedy masz @Transactional
na konkretnej klasie/metodzie, gdzie chcesz zastąpić atrybut propagation
.
Oczywistym jest, że na poziomie metody zastępuje ten sam na poziomie klasy, ale czy zastępuje on <tx:advice>
(i faktycznie, <aop:pointcut>
)?
Mam nadzieję, że dwa kolektory nie zostanie utworzony na tej samej klasy (i cokolwiek dzieje się pierwszy rozpocznie transakcję)
Co ciekawe, zachowuje się tak, jak się spodziewaliśmy. Zrobię teraz trochę kopania, aby zobaczyć, co więcej jest w TxAdviceBeanDefinitionParser .. – Bozho
Zastanawiam się, czy proxy generowane przez 'TxAdviceBeanDefinitionParser' sprawdza element docelowy dla adnotacji przy wywołaniu. – skaffman
Okazuje się, że moje założenie o dwóch utworzonych TransactionInterceptors jest prawdziwe. Zadałem pytanie (w tym moje nowe wyniki) na forum wiosennym i będę na bieżąco informować o wyniku. – Bozho