Существует огромная разница между прокси и аспектами байт-кода.
Прокси-серверы могут перехватывать только в том случае, если вызов происходит из «внешнего пространства», но не в том случае, если вызов происходит из самого объекта (this.transactionalMethod ())
Это означает, что если у вас есть класс с двумя методами, T и B. Метод T
имеет аннотацию транзакции, а метод B
вызывает T
на “this.T()
”, тогда прокси никогда не вызывается (для T
) поэтому в этом случае обработка транзакций не производится!
Если вы используете AspectJ, код обработки транзакции будет байтовым в байтовом коде T
, и он будет выполняться независимо от того, происходит ли вызов от самого объекта или от другого объекта.