Spring: менеджер транзакций на основе аннотаций - PullRequest
12 голосов
/ 11 ноября 2010

Я настраиваю новый проект JPA + Spring.В чем разница (для меня как программиста) между:

<tx:annotation-driven transaction-manager="transactionManager" />

и

<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />

в моем applicationContext.xml?

Ответы [ 2 ]

28 голосов
/ 12 ноября 2010

Существует огромная разница между прокси и аспектами байт-кода. Прокси-серверы могут перехватывать только в том случае, если вызов происходит из «внешнего пространства», но не в том случае, если вызов происходит из самого объекта (this.transactionalMethod ())

Это означает, что если у вас есть класс с двумя методами, T и B. Метод T имеет аннотацию транзакции, а метод B вызывает T на “this.T() ”, тогда прокси никогда не вызывается (для T) поэтому в этом случае обработка транзакций не производится!

Если вы используете AspectJ, код обработки транзакции будет байтовым в байтовом коде T, и он будет выполняться независимо от того, происходит ли вызов от самого объекта или от другого объекта.

6 голосов
/ 11 ноября 2010

Документы говорят:

Режим "прокси" в режиме по умолчанию обрабатывает аннотированные bean-компоненты для прокси с использованием среды Spring AOP (следуя семантике прокси, как описано выше, применительно к методу).звонки, поступающие только через прокси).Альтернативный режим «aspectj» вместо этого связывает затронутые классы с аспектом транзакции Spring AspectJ, модифицируя байт-код целевого класса для применения к любому виду вызова метода.Для AspectJ-ткачества требуется наличие Spring-aspect.jar в пути к классам, а также ткачество во время загрузки (или ткачество во время компиляции).(См. Раздел 7.8.4.5, «Конфигурация пружины» для получения подробной информации о том, как настроить ткачество во время загрузки.)

Не имеет значения (с точки зрения разработчика), какой режим будет использоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...